SharePoint 検索: アンダースコアを含むファイル名の処理

SharePoint 検索: アンダースコアを含むファイル名の処理

当社では、従業員がネットワーク ファイル共有を検索できるように SharePoint Server 2007 を使用していますが、ファイルのインデックス作成時にファイル名の下線が単語区切りとして扱われないようです。

その結果、チョコレート意思:

  • マッチ "チョコレートミルクシェイク.doc"
  • ただし、「chocolate_cake.doc」には一致しません

(もちろんこれは単純化した例であり、実際にはコンテンツ2 番目のファイルには「chocolate」という単語が含まれている可能性があり、ファイル名ではなくその単語で一致します。しかし、企業環境では、ユーザーが探しているファイルの名前の一部を知っていて、一致するファイル名が検索結果の上部に表示されることを期待するというのが一般的なシナリオであるため、問題自体は十分に現実的です。また、ファイル名にアンダースコアを使用することは、当社内で広く使用されている慣例です。

アンダースコアはファイルの内容では単語の区切りとして扱われませんが、これは私たちにとってあまり問題ではありません。この問題の根本的な原因はおそらくこれは、SharePoint が使用するワード ブレーカー (つまり、IWorkBreaker インターフェイスを実装する言語固有の DLL) の動作に関連していますが、まだ確認していません。

この問題の回避策を知っている人はいますか? Search Server 2008 Express (同じテクノロジに基づいています) でもテストしましたが、これも影響を受けています。この問題が SharePoint 2010 で修正されているかどうかはわかりません。

答え1

アンダースコアは区切り文字として扱われていないと思います。social.technet には、このことを裏付けるようなトラフィックが少しあります。もしそうなら、'chocolate_cake.doc' から 'chocolate' を一致させるには、部分的/ワイルドカード検索が必要になりますが、コア結果 Web パーツではそれができません。ただし、codeplex があります。ウェブパーツ2007 年にはまさにそれが実現します。

ちなみに、2010年版この同じ Web パーツでは、ユーザーがアスタリスクを入力すると、SharePoint 2010 によってワイルドカード検索が追加されることが示されています。

答え2

ワード ブレーカーがドキュメント コンテンツとファイル名の両方のアンダースコアの処理を決定することを確認しました。ワード ブレーカーはレジストリで言語ごとに構成されます。

ワード ブレーカーは ActiveX コントロールとして実装されており、理論的には独自のものを作成することもできます (Windows XP 用の Microsoft プラットフォーム SDK には、例 "lrsample" が含まれています)。ただし、そのためのツールが手元にありません。Microsoft が提供する多くのワード ブレーカーは、すべてアンダースコアを単語の一部として扱うようですが、アンダースコアで分割するものを見つけました。簡体字中国語のワード ブレーカー バージョン 2 (chsbrkr.dll - 1,677,824 バイト)。この動作は、簡体字中国語のワード ブレーカー バージョン 3 とは異なります。これは、Search Server 2008 Express およびおそらく SharePoint 2007 にも付属しています。

したがって、必要な検索動作を実現するために、次のワード ブレーカーを使用するように SharePoint 検索を構成しました。

  1. DLL を C:\Program Files\Microsoft Office Servers\12.0\Bin\chsbrkr2.dll にコピーします。
  2. regedit を使用して、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\12.0\Search\Setup\ContentIndexCommon\LanguageResources\Default を参照します。
  3. 関連する言語、私の場合は「英語(英国)」と「英語(米国)」については、次のキーを変更します "WBDLLPathOverride" = "C:\PROGRA~1\MI54E7~1\12.0\Bin\ChsBrkr2.dll"(パスは異なる場合があります) 。"WBreakerClass" = "{9717fc70-c1bc-11d0-9692-00a0c908146e}"
  4. 「Office SharePoint Server Search」サービスを再起動します (コマンド ラインでnet stop osearchに続いて を実行することで実行できますnet start osearch)。
  5. 検索管理ページに移動し、完全なクロールを開始します。

アンダースコアを単語の区切りとして扱うこと以外に、chsbrkr.dll と既定の英語のワード ブレーカーとの間に他の重要な違いがあるかどうかはわかりませんが、今のところ問題は発生していません。カスタム ワード ブレーカーを特定の管理プロパティ (この場合は Path) に適用する方法があればすばらしいのですが、それが可能かどうかはわかりません。データベースの MSSManagedProperties テーブルには、「WordBreakerOverride」という期待の持てる名前の列がありますが、その目的がわかりません。

注記:SharePoint 2010 では、管理プロパティに SplitStringCharacters と呼ばれる追加の設定があるようで、この回避策はおそらく不要になるでしょう。

関連情報