検索用のワード ブレーカーとステミング機能の構成と管理
ワード ブレーカーとステミング機能は、すべてのフルテキスト インデックス データに対して言語分析を実行します。 言語分析には、単語の境界 (単語の区切り) の検索と動詞の活用 (ステミング) が含まれます。 ワード ブレーカーとステミング機能は言語に固有のものであり、言語分析の規則は言語によって異なります。 特定の言語において、 ワード ブレーカー によって、言語の語彙の規則に基づいて単語の境界を検出し、個々の単語を識別します。 各単語 ( トークンともいいます) は、サイズを縮小するために圧縮された表現でフルテキスト インデックスに挿入されます。 ステミング機能 はその言語の規則に基づいて特定の語の変化形を生成します (たとえば、"running"、"ran"、"runner" は、"run" という語の変化形です)。
言語固有のワード ブレーカーを使用すると、その言語に対する検索結果の精度が高くなります。 言語ファミリにはワード ブレーカーが存在していても、特定のサブ言語は対象とされない場合は、主言語が使用されます。 たとえば、カナダ系フランス語テキストの処理には、フランス語のワード ブレーカーが使用されます。 特定の言語用のワード ブレーカーが使用できない場合は、ニュートラル ワード ブレーカーが使用されます。 ニュートラル ワード ブレーカーを使用すると、単語は空白や句読点などのニュートラル文字で分割されます。
ワード ブレーカーの登録
言語のワード ブレーカーを使用する場合は、そのワード ブレーカーを登録する必要があります。 登録されたワード ブレーカー、関連する言語リソースステマー、ノイズ ワード (ストップワード)、類義語辞典ファイルの場合は、フルテキスト インデックス作成およびクエリ操作でも使用できます。 ワード ブレーカーが現在 SQL Server に登録されている言語の一覧を表示するには、次の Transact-SQL ステートメントを使用します。
SELECT * FROM sys.fulltext_languages
ワード ブレーカーを追加、削除、または変更すると、フルテキスト インデックスおよびフルテキスト クエリでサポートされている Microsoft Windows のロケール識別子 (LCID) の一覧を更新する必要があります。 詳細については、「 登録済みのフィルターおよびワード ブレーカーの表示または変更」を参照してください。
[既定のフルテキスト言語] オプションの設定
ローカライズされたバージョンのSQL Serverの場合、SQL Serverセットアップでは、適切な一致が存在する場合にオプションをサーバーの言語に設定default full-text language
します。 ローカライズされていないバージョンのSQL Serverのdefault full-text language
場合、オプションは英語です。
フルテキスト インデックスを作成または変更する際には、フルテキスト インデックス列ごとに言語を指定できます。 列に言語が指定されていない場合、既定では構成オプション default full-text language
の値になります。
Note
1 つのフルテキスト クエリ関数句に指定されるすべての列は、クエリで LANGUAGE オプションが指定されていない限り、同じ言語を使用する必要があります。 クエリ対象のフルテキスト インデックスが付けられた列に使用する言語によって、フルテキスト クエリの述語 (CONTAINS および FREETEXT) および関数 (CONTAINSTABLE および FREETEXTTABLE) の引数に対して実行される言語分析が決まります。
インデックス付きの列の言語の選択
フルテキスト インデックスを作成する際には、各インデックス列に対して言語を指定することをお勧めします。 列に言語が指定されていない場合、システムの既定の言語が使用されます。 列のインデックス作成に使用されるワード ブレーカーとステミング機能は、列の言語によって決まります。 また、指定した言語の類義語辞典ファイルが、列のフルテキスト クエリで使用されます。
フルテキスト インデックスの作成時に列の言語を選択する際には、注意点が 2 つあります。 これらの注意点は、テキストをトークン化する方法と、Full-Text Engine によるインデックス作成の方法にかかわるものです。 詳細については、「 フルテキスト インデックス作成時の言語の選択」を参照してください。
列のワード ブレーカーの言語を表示するには
sys.fulltext_index_columns (Transact-SQL)
SELECT 'language_id' AS "LCID" FROM sys.fulltext_index_columns;
ワード ブレーカーの情報の取得
ワード ブレーカー、類義語辞典、ストップリストの組み合わせによるトークン化の結果の表示
登録されているワード ブレーカーに関する情報を返すには
単語区切りのタイムアウト エラーのトラブルシューティング
単語区切りのタイムアウト エラーは、さまざまな状況で発生する可能性があります。 エラーが発生する状況とその対処方法については、「 MSSQLSERVER_30053」を参照してください。
新しいワード ブレーカーの影響について
SQL Serverの各バージョンには、通常、より優れた言語ルールを備え、以前のワード ブレーカーよりも正確な新しいワード ブレーカーが含まれています。 新しいワード ブレーカーの動作が、以前のバージョンのSQL Serverからインポートされたフルテキスト インデックスのワード ブレーカーとは若干異なる場合があります。 これは、データベースが現在のバージョンのSQL Serverにアップグレードされたときにフルテキスト カタログがインポートされた場合に重要です。 フルテキスト カタログのフルテキスト インデックスで使用される 1 つまたは複数の言語が、新しいワード ブレーカーに関連付けられる可能性があります。 詳細については、「 フルテキスト検索のアップグレード」を参照してください。
すべてのワード ブレーカーの完全な一覧については、「 sys.fulltext_languages (Transact-SQL)」を参照してください。
参照
ALTER FULLTEXT INDEX (Transact-SQL)
CREATE FULLTEXT INDEX (Transact-SQL)
sp_fulltext_service (Transact-SQL)
sys.fulltext_languages (Transact-SQL)
フルテキスト検索に使用するストップワードとストップリストの構成と管理
フルテキスト検索のアップグレード