ワード ブレーカーとステミング機能

ワード ブレーカーとステミング機能は、すべてのフルテキスト インデックス データに対して言語分析を実行します。言語分析には、単語の境界 (単語の区切り) の検索と動詞の活用 (ステミング) が含まれます。ワード ブレーカーとステミング機能は言語に固有のものであり、言語分析の規則は言語によって異なります。特定の言語において、ワード ブレーカーによって、言語の語彙の規則に基づいて単語の境界を検出し、個々の単語を識別します。各単語 (トークンともいいます) は、サイズを縮小するために圧縮された表現でフルテキスト インデックスに挿入されます。ステミング機能はその言語の規則に基づいて特定の語の変化形を生成します (たとえば、"running"、"ran"、"runner" は、"run" という語の変化形です)。

言語固有のワード ブレーカーを使用すると、その言語に対する検索結果の精度が高くなります。言語ファミリにはワード ブレーカーが存在していても、特定のサブ言語は対象とされない場合は、主言語が使用されます。たとえば、カナダ系フランス語テキストの処理には、フランス語のワード ブレーカーが使用されます。特定の言語用のワード ブレーカーが使用できない場合は、ニュートラル ワード ブレーカーが使用されます。ニュートラル ワード ブレーカーを使用すると、単語は空白や句読点などのニュートラル文字で分割されます。

ワード ブレーカーの登録

言語のワード ブレーカーを使用する場合は、そのワード ブレーカーを登録する必要があります。ワード ブレーカーを登録すると、関連する言語リソース (ステミング機能、ノイズ ワード (ストップ ワード)、および類義語辞典ファイル) もフルテキスト インデックス操作やフルテキスト クエリ操作で使用できるようになります。現在 SQL Server にワード ブレーカーが登録されている言語の一覧を表示するには、次の Transact-SQL ステートメントを使用します。

SELECT * FROM sys.fulltext_languages

ワード ブレーカーを追加、削除、または変更すると、フルテキスト インデックスおよびフルテキスト クエリでサポートされている Microsoft Windows のロケール識別子 (LCID) の一覧を更新する必要があります。詳細については、「登録されているワード ブレーカーおよびフィルターの一覧を変更する方法 (Transact-SQL)」を参照してください。

SQL Server 2008 には、いくつかのサード パーティ製のライセンス済みワード ブレーカーが付属しています。一部の言語 (デンマーク語、ポーランド語、トルコ語) については、追加のサードパーティ製ワード ブレーカー (およびステミング機能) を手動で読み込むことができます。これらのワード ブレーカーが既定で有効にならないのは、これらのワード ブレーカーを所有するサード パーティが、既定で有効にするために必要とされるテスト、セキュリティ、および堅牢性のレベルをまだ満たしていないからです。詳細については、「ライセンスが許可されているサード パーティのワード ブレーカーを読み込む方法」を参照してください。

フルテキスト言語オプション

SQL Server のローカライズされたバージョンでは、適切な言語が存在する場合、SQL Server セットアップによって default full-text language オプションはサーバーの言語に設定されます。SQL Server のローカライズされていないバージョンでは、default full-text language オプションは英語になります。

フルテキスト インデックスを作成または変更する際には、フルテキスト インデックス列ごとに言語を指定できます。列に言語が指定されていない場合、既定では構成オプション default full-text language の値になります。

詳細については、「default full-text language オプション」を参照してください。

注意

1 つのフルテキスト クエリ関数句に指定されるすべての列は、クエリで LANGUAGE オプションが指定されていない限り、同じ言語を使用する必要があります。クエリ対象のフルテキスト インデックスが付けられた列に使用する言語によって、フルテキスト クエリの述語 (CONTAINS および FREETEXT) および関数 (CONTAINSTABLE および FREETEXTTABLE) の引数に対して実行される言語分析が決まります。

フルテキスト インデックス作成時の列の言語の選択

フルテキスト インデックスを作成する際には、各インデックス列に対して言語を指定することをお勧めします。列に言語が指定されていない場合、システムの既定の言語が使用されます。列のインデックス作成に使用されるワード ブレーカーとステミング機能は、列の言語によって決まります。また、指定した言語の類義語辞典ファイルが、列のフルテキスト クエリで使用されます。

フルテキスト インデックスの作成時に列の言語を選択する際には、注意点が 2 つあります。これらの注意点は、テキストをトークン化する方法と、Full-Text Engine によるインデックス作成の方法にかかわるものです。詳細については、「フルテキスト インデックス作成時の言語の選択に関するベスト プラクティス」を参照してください。

列のワード ブレーカーの言語を表示するには

SQL Server 2008 の新しいワード ブレーカーの影響

SQL Server 2008 には 50 以上の言語のワード ブレーカーが含まれており、そのうち 23 言語は SQL Server 2005 にも存在します。変更がないのは、英語、韓国語、タイ語、中国語 (すべての形式) のワード ブレーカーだけです。その他の言語については、SQL Server 2008 で新しい世代のワード ブレーカーが導入されました。これらのワード ブレーカーでは、言語の規則が改良されているため、以前のワード ブレーカーよりも精度が向上しています。新しいワード ブレーカーは、インポートされた SQL Server 2005 フルテキスト インデックスのワード ブレーカーとは少し動作が異なる場合もあります。SQL Server 2005 データベースの SQL Server 2008 へのアップグレード時にフルテキスト カタログをインポートした場合は、この動作の違いが重要になります。フルテキスト カタログのフルテキスト インデックスで使用される 1 つまたは複数の言語が、新しいワード ブレーカーに関連付けられる可能性があります。詳細については、「フルテキスト検索のアップグレード」を参照してください。

SQL Server 2005 でサポートされる言語のワード ブレーカーのバージョン

変更がないのは、英語、韓国語、タイ語、中国語 (すべての形式) のワード ブレーカーだけです。次の表に、SQL Server 2005 に存在していたワード ブレーカーの一覧と、それらのワード ブレーカーが SQL Server 2008 で更新されているかどうかを示します。すべての SQL Server 2008 ワード ブレーカーの一覧については、「sys.fulltext_languages (Transact-SQL)」を参照してください。

注意

既定では、ほとんどの言語のワード ブレーカーが登録されます。ただし、ライセンスが許可されている多くのサード パーティ製のワード ブレーカーは既定で無効になっています。これらの言語、およびこれらのワード ブレーカーの登録方法については、「ライセンスが許可されているサード パーティのワード ブレーカーを読み込む方法」を参照してください。

言語

LCID

ワード ブレーカー

ポルトガル語 (ブラジル)

1046

新規

中国語 (中華人民共和国香港特別行政区)

3076

変更なし

中国語 (中華人民共和国マカオ特別行政区)

5124

変更なし

中国語 (シンガポール)

4100

変更なし

デンマーク語 (既定で無効)

1030

変更なし

オランダ語

1043

新規

英語

1033

変更なし

英語 (英国)

2057

変更なし

フランス語

1036

新規

ドイツ語

1031

新規

イタリア語

1040

新規

日本語

1041

新規

韓国語

1042

変更なし

ニュートラル

0

新規

ポーランド語 (既定で無効)

1045

変更なし

ポルトガル語

2070

新規

ロシア語

1049

新規

簡体字中国語

2052

変更なし

スペイン語

3082

新規

スウェーデン語

1053

新規

タイ語

1054

変更なし

繁体字中国語

1028

変更なし

トルコ語 (既定で無効)

1055

変更なし

サポートされる言語の完全な一覧については、「sys.fulltext_languages (Transact-SQL)」を参照してください。

単語区切りのタイムアウト エラー

単語区切りのタイムアウト エラーは、さまざまな状況で発生する可能性があります。エラーが発生する状況とその対処方法については、「MSSQLSERVER_30053」を参照してください。

ワード ブレーカーの情報の取得

ワード ブレーカー、類義語辞典、およびストップ リストの組み合わせによるトークン化の結果の表示

登録されているワード ブレーカーに関する情報を返すには