次の方法で共有


言語リソース コンポーネントについて

言語リソースは、インデックス作成とクエリ機能を新しい言語とロケールに拡張するワード ブレーカーとステマーで構成されます。 Word ブレーカーは、インデックスの作成とクエリの両方で使用されます。 ステマーは、クエリにのみ使用されます。 Windows Search では、言語リソース DLL を使用して、特定の言語ロケールの IWordBreaker および IStemmer 実装にバインドします。

このトピックは次のように整理されています。

言語リソースについて

Windows Search では、フィルター ( IFilter インターフェイスの実装) と ILoadFilter を使用して、ドキュメントにネイティブ形式でアクセスします。 IFilter コンポーネントは、ドキュメントからテキストの内容、プロパティ、書式設定を抽出します。 IFilter は、フィルター処理しているドキュメントのロケールを識別します。 インデックス作成コンポーネントは、そのロケールに適したワード ブレーカーを呼び出します。 使用できない場合、インデックス作成コンポーネントはニュートラル ワード ブレーカーを呼び出します。 ワード ブレーカーは、ワード ブレーカーが解析して個々の単語と語句を生成する Unicode 文字の入力ストリーム を IFilter から受け取ります。 ワード ブレーカーでは、日付と時刻の形式も正規化されます。 インデクサーは、ワード ブレーカーによって生成された単語を、単語をすべての大文字に変換して正規化します。 インデクサーは、大文字の単語をフルテキスト インデックスに保存します。そのロケールで識別されるノイズ ワードは除きます。

次の表は、「図 1 は、インデックス作成プロセス中の Windows Search の言語リソースの役割を示しています」という文のアクションと対応する結果を示しています。

アクション 結果のテキスト
元のテキスト 図 1 は、インデックス作成プロセス中の Windows Search の言語リソースの役割を示しています。
Filtering 図 1 は、インデックス作成プロセス中の Windows Search の言語リソースの役割を示しています。
単語区切り 図 1、図 1 は、、ロール、の、言語、リソース、for、Windows、Search、during、、index、creation、process、EOS
正規化 図 1、図 1、図、ROLE、OF、LANGUAGE、RESOURCES、WINDOWS、SEARCH、DURING、THE、INDEX、CREATION、PROCESS
ノイズ ワードの削除 図, 図, 図, ROLE, 言語, リソース, WINDOWS, 検索, 実行中, インデックス, 作成, プロセス
フルテキスト インデックスに保存する 図, 図, 図, ROLE, 言語, リソース, WINDOWS, 検索, 実行中, インデックス, 作成, プロセス

 

Wordブレーカーとステミング機能は、クエリ時に FREETEXT クエリを展開するために使用されます。 言語コード識別子 (LCID) がクエリ パラメーターとして渡されない限り、クエリのロケールは既定のロケールです。 クエリ コンポーネントは、クエリの WHERE 句に記載されているクエリ用語に対して適切なワード ブレーカーを呼び出します。 たとえば、クエリの WHERE 句に "FREETEXT (リンゴ、オレンジ、梨) が含まれている場合、ワード ブレーカーは "apples、oranges、pears" というテキストを受け取ります。クエリ WHERE 句で CONTAINS フルテキスト述語が使用されている場合、ワード ブレーカーからのテキスト出力は正規化されます。 それ以外の場合、クエリ コンポーネントは、ワード ブレーカーによって識別された各単語を、その言語とロケールの適切なステマーに渡します。 ステミング機能は、その単語の代替フォーム (変更されたフォーム) の一覧を生成します。 クエリ コンポーネントは、クエリ用語の展開されたリストを正規化し、ノイズ ワードを削除します。

次の表に、クエリ "apples、oranges、pears" のアクションと対応する結果を示します。

アクション 結果のテキスト
元のテキスト リンゴ、オレンジ、梨
単語区切り リンゴ、オレンジ、梨、EOS
語幹検索 リンゴ、リンゴ、オレンジ、オレンジ、オレンジ、梨、梨
正規化 APPLE、APPLES、ORANGE、ORANGEY、ORANGES、AND、PEAR、PEARS
ノイズ ワードの削除 APPLE, APPLES, ORANGE, ORANGEY, ORANGES, PEAR, PEARS
クエリ用語の展開された一覧 APPLE, APPLES, ORANGE, ORANGEY, ORANGES, PEAR, PEARS

 

展開されたクエリ用語を使用すると、クエリで元のクエリの意図に一致するドキュメントが見つかる可能性が高くなります。 ワード ブレーカーまたはステマーがクエリ時に生成するテキストは、ディスクに格納されません。

単語分割

Word分割とは、テキストを個々のテキスト トークンまたは単語に分離することです。 多くの言語 (特にローマ字を含む言語) には、単語、語句、文を識別するために使用される単語区切り記号 (空白文字など) と句読点の配列があります。 Wordブレーカーは、信頼性の高い正確な結果を提供するために、正確な言語ヒューリスティックに依存する必要があります。 Word改行は、個々の文字の意味がコンテキストから決定される文字ベースの書き込みまたはスクリプトベースのアルファベットのシステムでは、より複雑です。 ワード ブレーカーの実装に影響する可能性がある言語上の考慮事項の詳細については、「 言語と Unicode の考慮事項」を参照してください。

語幹検索

Windows Search では、クエリ時にステマーを排他的に適用して、 FREETEXT クエリとプロパティ クエリで用語の追加の単語フォームを生成します。 ステマーは形態学的分析を実行し、文法規則を適用して、単語の代替フォーム (変化されたフォーム) の一覧を生成します。 代替フォームは、多くの場合、同じ幹または基本フォームを持っています。 Indexing Service は、単語の変化したフォームを生成することで、クエリに統計的により関連性の高いクエリ結果を返します。 たとえば、"swim meet" のフルテキスト クエリは、"泳ぐ、泳ぐ、泳ぐ、泳ぐ"、泳ぐ、泳ぐ"、泳ぐ、泳ぐ、または "meet、meet's、meets、meets"、meeting、met"、およびこれらの用語の組み合わせを含むドキュメントと一致します。

一部の言語では、標準とバリアントの両方の変曲に対して、インデックス時とクエリ時の両方で変化した用語を生成する必要があります。 この場合、ステミングはワード ブレーカー コンポーネントで行われますが、実際のステマーでのステミング作業は最小限です。 たとえば、日本語ワード ブレーカーは、インデックスの作成とクエリの両方でステミングを実行し、クエリでさまざまな変化した形式の検索語句を検索できるようにします。

正規化

すべての言語のドキュメントは、1 つのインデックスに格納されます。 単語と言語ルールは大きく異なりますが、数値、日付、時刻など、すべてのワード ブレーカーで一貫して処理されるいくつかの考慮事項があります。 ワード ブレーカーの実装に影響する可能性がある正規化に関する考慮事項の詳細については、「 Surface Form Normalization」を参照してください。

ノイズ ワード

ノイズ ワード (ストップ ワードとも呼ばれます) は、コンテンツの重要なインジケーターではない単語です。 Indexing Service は、クエリ用語やフルテキスト インデックスに含まれるコンテンツからノイズ ワードを削除します。 オフセットとは、文書内またはクエリ用語のリスト内の単語の出現です。 ドキュメントまたはクエリ内のノイズ ワードのオフセットは空白として記録されます。 ノイズ ワードを削除すると、不要なインデックスの増加を回避することで、クエリのパフォーマンスが向上します。 また、クエリ結果の関連性も向上します。 特定の言語のノイズ ワード リストを使用するように Windows Search を構成できます。 これらのリストは、その言語に対してワード ブレーカーが呼び出されるときに使用されます。 たとえば、英語の "the" は頻繁に発生するため、一意のキーとしての価値はほとんどありません。 "The" はノイズ ワード リスト内にあり、コンテンツ インデックスに書き込まれず、クエリが実行された場合、結果は返されません。

ノイズ ワードは、フレーズ クエリのプレースホルダーとして機能します。 "wag the dog" というテキストを含むドキュメントは、出現箇所 1 に "wag"、出現箇所 3 で "dog" と共にインデックスに格納されます。 フレーズ クエリ "wag dog" は一致しませんが、フレーズ クエリ "wag a dog" は、出現情報が一致するためです。 "wag purple dog" という語句は、出現箇所 2 のインデックスに "紫" が見つからないため、一致しません。 ただし、"wag the dog" のクエリは、"wag purple dog" を含むドキュメントを返します。これは、ドキュメントに "wag" と "dog" の間にノイズのない単語があるかどうかを効率的に判断する方法がないためです。

言語リソースの拡張

Word ブレーカーとステミング機能の実装

言語と Unicode に関する考慮事項

言語リソースとベスト プラクティスのトラブルシューティング