次の方法で共有


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 は Neutral ワードブレーカーを使用して空白文字を区切ります。

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

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 中国語 (香港特別行政区、PRC) 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 Marathi (インド) 0x044E
Norwegian_Bokmal ノルウェー語 (ブークモール、ノルウェー) 0x0414
Polish_Default ポーランド語 (ポーランド) 0x0415
Portuguese_Portugal ポルトガル語 (ポルトガル) 0x0816
Portuguese_Brazil ポルトガル語 (ブラジル) 0x0416
Punjabi_Default パンジャブ語 (インド) 0x0446
Romanian_Default ルーマニア語 (ルーマニア) 0x0418
Russian_Default ロシア語 (ニュートラル) 0x0019
Serbian_Cyrillic セルビア語 (セルビア、モンテネグロ、旧、キリル) 0x0C1A
Serbian_Latin セルビア語 (セルビアとモンテネグロ、旧、ラテン) 0x081A
Slovak_Default スロバキア語 (スロバキア) 0x041B
Slovenian_Default スロベニア語 (スロベニア) 0x0424
Spanish_Modern スペイン語 (スペイン、モダン ソート) 0x0C0A
Swedish_Default スウェーデン語 (スウェーデン) 0x041D
Tamil_Default タミール語 (インド) 0x0449
Telugu_Default テルグ語 (インド) 0x044A
Thai_Default タイ語 (タイ) 0x041E
Turkish_Default トルコ語 (Türkiye) 0x041F
Ukrainian_Default ウクライナ語 (ウクライナ) 0x0422
Urdu_Default ウルドゥ語 (パキスタン) 0x0420
Vietnamese_Default ベトナム語 (ベトナム) 0x042A

 

手記

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

 

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

手記

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

 

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

その他のリソース

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

Windows Search の概要

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

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