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 でマネージド コードを使用する