Share via


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

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

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

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

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

変更履歴

変更内容

「ワード ブレーカの登録」セクションを更新しました。