SharePoint 2013 検索対象の最大テキスト文字数を変更する


SharePoint 2013 で検索対象とするドキュメントにとても長い文字列が含まれている場合の動作を考えてみましょう。例えば、研究論文のような Word ドキュメントにとても長い文章が含まれているドキュメントを検索対象にするような場合が該当します。

標準では

ソフトウェアの境界と制限で定義された「インデックス付きの管理プロパティ サイズ」のしきい値として定義された「512 KB」が当てはまります。

ソフトウェアの境界と制限 (SharePoint 2013)
http://technet.microsoft.com/ja-jp/library/cc262787.aspx#Search

Software boundaries and limits for SharePoint 2013
http://technet.microsoft.com/en-us/library/cc262787.aspx#Search

この「512 KB」は、管理プロパティと呼ばれる「検索対象のドキュメントを検索出来るように分析して要素毎に分析結果を格納した場所」に適用され、「body」というドキュメントの本文のテキスト データを格納するための管理プロパティで、最もこの制限に引っかかりやすくなります。

制限に引っかかると、その管理プロパティには、「先頭から 512 KB (= 524,288) までの文字が格納され、残りは切り捨てられます。また、切り捨てられるとクロール ログにその旨の警告が表示されます。

image

つまり、「標準では、最大で本文の先頭 52 万 (524,288) 文字が検索対象となる」ということです (厳密には、Word ドキュメントなどの場合には、フィルタ機能によって、どのようにテキスト データが抽出されたかによって文字数は若干変動します)。

増やしたい

52 万文字強では足りないケースもあると思います。その場合には、以下のような Windows PowerShell コマンドレットによって、最小 0 から最大約 200 万文字 (2,097,152) までしきい値を変更することが可能です。

$ssa = Get-SPEnterpriseSearchServiceApplication
$mp = Get-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $ssa -Identity “<管理プロパティ名 (例:body)>”
$mp.MaxCharactersInPropertyStoreIndex = <しきい値 (例:2097152)>
$mp.Update()

上記変更の後に、必要に応じて再クロールを行ってください。

注意! 絶対!!

しきい値の変更に際しては、以下の 2 点に十分に注意してください。

  1. SharePoint Server 2013 用の 2013 年 4 月の CU (Cumulative Update)、またはそれ以降の CU の適用を行ってください。なお、CU の適用の前に、2013 年 3 月のパブリック更新プログラムの適用が必要です。
    なお、ブログに記載されている通り、必要でなければ今後提供される最新の CU をお待ちください。
  2. TechNet ライブラリに記載されている通り、MaxCharactersInPropertyStoreIndex プロパティの値を増やすということは、『使用するディスク領域が増え、システムの全体的な負荷が増えます』となりますので、十分に検証の上でご利用ください。
広告