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 開発者ガイド」を参照してください。
関連トピック