Windows Search でサポートされる言語

このトピックでは、Windows Search が複数の言語をサポートする方法について説明します。

トークン化、ワードブレーカー、言語リソース

Windows Search は言語に依存しませんが、ワードブレーカーがテキストをトークン化する方法により、言語間での検索の精度が異なる場合があります。 ワードブレーカーは、言語に対してさまざまなトークン化ルールを実装し、テキストを個々のトークン (単語) に分割して、インデックスを作成または検索します。

インデックス付きテキストとクエリ文字列の両方の言語がトークンに分割されます。 トークン化ルールは言語によって異なるため、言語または言語ファミリごとに個別のワードブレーカーがあります。 クエリ言語とインデックス付き言語の間に不一致がある場合、結果は予測できない可能性があります。

Windows Search には、適切に定義されたワードブレーカーのセットが付属しています。 従来のワードブレーカーおよびステマー コンポーネントは、Windows Vista 以降でサポートされています。 ドキュメントの言語を特定できない場合、Windows Search は、最も適切なワードブレーカーを識別するために言語の検出を試みます。 Windows Search は 、GetSystemPreferredUILanguages 関数を呼び出して、最初のマルチ ユーザー インターフェイス (MUI) 言語 (通常は MUI 言語パックがインストールされていない限りシステム UI 言語) を決定することで、言語の検出を試みます。 その呼び出しが成功した場合は、最初の MUI 言語のワードブレーカーが使用されます。 GetSystemPreferredUILanguages の呼び出しが失敗した場合、Windows Search は GetSystemDefaultLCID 関数を呼び出してシステム ロケールを取得し、そのロケールに関連付けられているワードブレーカーを使用します。

言語にワードブレーカーがインストールされていない場合、Windows Search は ニュートラル ワードブレーカーを使用して空白で区切ります。

次の例に示すように、レジストリを使用して言語を削除できます。

HKEY_LOCAL_MACHINE
   SYSTEM
      CurrentControlSet
         Control
            ContentIndex
               Language
                  Dutch_Dutch
                     (Default)
                     Locale
                     NoiseFile
                     StemmerClass = CLSID
                     WBreakerClass = CLSID

ヒント

レジストリに変更を加えた場合は、Windows Search を再起動します。

 

Windows Search で新しいワードブレーカーが必要な場合は、クラス識別子 (CLSID) が読み取られ、インスタンス化されたワードブレーカーがキャッシュされます。

IWordBreaker インターフェイスを実装することで、言語のカスタム ワードブレーカーを作成できます。 Windows Search は、コンテンツ インデックスを作成してクエリを実行するときに 、IWordBreaker メソッドを呼び出します。

インデックス付きコンテンツのロケール情報は、コンテンツのソースから取得されます。 ソース実装者がインデックス付きコンテンツのロケールを知らない場合は、ロケールを LOCALE_NEUTRAL に設定する必要があります。

たとえば、フィルター ハンドラー ( IFilter インターフェイスの実装)、プロパティ ハンドラー、またはプロトコル ハンドラーを実装する場合は、特定のロケール情報があり、その精度に自信がない限り、インデックス付きコンテンツのロケールを LOCALE_NEUTRAL に設定する必要があります。

ヒント

インデックス クエリがユーザー入力に基づいている場合、ロケールはユーザーが入力している言語と一致する必要があります。 このロケールを確認するには、 GetKeyboardLayout 関数を呼び出します。

 

ワードブレーカーでサポートされている言語

Windows Search には、次の言語をサポートするワードブレーカーが含まれています。

レジストリ キー 言語 (サブ言語) LCID
Arabic_SaudiArabia アラビア語 (ニュートラル) 0x0001
Bengali_Default バングラ (ニュートラル) 0x0045
Bulgarian_Default ブルガリア語 (ブルガリア) 0x0402
Catalan_Default カタルニア語 (カタルニア) 0x0403
Chinese_HongKong 中国語 (中華人民共和国香港特別行政区) 0x0C04
Chinese_Simplified 簡体中国語 0x0804
Chinese_Traditional 繁体中国語 0x0404
Croatian_Default クロアチア語 (クロアチア) 0x041A
Czech_Default チェコ語 (チェコ共和国) 0x0405
Danish_Default デンマーク語 (デンマーク) 0x0406
Dutch_Dutch オランダ語 (オランダ) 0x0413
English_UK 英語 (イギリス) 0x0809
English_US 英語 (米国) 0x0409
Finnish_Default フィンランド語 (フィンランド) 0x040B
French_French フランス語 (フランス) 0x040C
German_German ドイツ語 (ドイツ) 0x0407
Greek_Default ギリシャ語 (ギリシャ) 0x0408
Gujarati_Default グジャラート語 (インド) 0x0447
Hebrew_Default ヘブライ語 (ニュートラル) 0x000D
Hindi_Default ヒンディー語 (インド) 0x0439
Hungarian_Default ハンガリー語 (ハンガリー) 0x040E
Icelandic_Default アイスランド語 (アイスランド) 0x040F
Indonesian_Default インドネシア語 (インドネシア) 0x0421
Italian_Italian イタリア語 (イタリア) 0x0410
Japanese_Default 日本語 (日本) 0x0411
Kannada_Default カンナダ語 (インド) 0x044B
Korean_Default 韓国語 (韓国) 0x0412
Latvian_Default ラトビア語 (ラトビア) 0x0426
Lithuanian_Default リトアニア語 (リトアニア語) 0x0427
Malay_Malaysia マレー語 (マレーシア) 0x043E
Malayalam_Default マラヤーラム語 (ニュートラル) 0x004C
Marathi_Default マラーティー語 (インド) 0x044E
Norwegian_Bokmal ノルウェー語 (ブークモール、ノルウェー) 0x0414
Polish_Default ポーランド語 (ポーランド) 0x0415
Portuguese_Portugal ポルトガル語 (ポルトガル) 0x0816
Portuguese_Brazil ポルトガル語 (ブラジル) 0x0416
Punjabi_Default パンジャーブ語 (インド) 0x0446
Romanian_Default ルーマニア語 (ルーマニア) 0x0418
Russian_Default ロシア語 (ニュートラル) 0x0019
セルビア語 (キリル) セルビア語 (セルビア、モンテネグロ、旧、キリル) 0x0C1A
セルビア語 (ラテン) セルビア語 (セルビアとモンテネグロ、旧、ラテン) 0x081A
Slovak_Default スロバキア語 (スロバキア) 0x041B
Slovenian_Default スロベニア語 (スロベニア) 0x0424
Spanish_Modern スペイン語 (スペイン、モダン ソート) 0x0C0A
Swedish_Default スウェーデン語 (スウェーデン) 0x041D
Tamil_Default タミール語 (インド) 0x0449
Telugu_Default テルグ語 (インド) 0x044A
Thai_Default タイ語 (タイ) 0x041E
Turkish_Default トルコ語 (トルコ) 0x041F
Ukrainian_Default ウクライナ語 (ウクライナ) 0x0422
Urdu_Default ウルドゥー語 (パキスタン) 0x0420
Vietnamese_Default ベトナム語 (ベトナム) 0x042A

 

Note

テーブル内の一部の言語の LCID は、言語識別子、サブ言語識別子、および並べ替え識別子を使用して生成されます。

 

言語と関連する識別子の詳細については、「 言語識別子の定数と文字列」を参照してください。

注意

これらの言語レジストリ キーがすべて特定のコンピューターに存在する保証はありません。 ユーザー設定によっては、特定の言語のワードブレーカーがコンピューターにインストールされる場合とインストールされていない場合があります。

 

Windows 8.1以降、ワードブレーカーを使用する推奨される方法は、WinRT API WordsSegmenter クラスを使用することです。

その他のリソース

  • 追加の言語とロケールにカスタム ワード ブレーカーとステミング機能を実装して使用する方法については、「 Windows Search での言語リソースの拡張」を参照してください。
  • テキストの言語を識別する必要がある場合は、Windows 7 以降で使用できる言語自動検出 (LAD) を使用できます。 詳細については、「 拡張言語サービス (ELS)」を参照してください。
  • インデックスの管理、クエリ、および拡張の詳細については、「 Windows Search 開発者ガイド」を参照してください。

Azure Search の概要

開発プラットフォームとしての Windows Search

シェル データと Windows Search でのマネージド コードの使用