フルテキスト検索に使用するストップワードとストップリストの構成と管理
適用対象:SQL ServerAzure SQL データベース
SQL Server フルテキスト インデックスが肥大化するのを防ぐため、 には、頻繁に出現する、検索に役立たない文字列を破棄するメカニズムがあります。 破棄されるこのような文字列を ストップワードと呼びます。 インデックスの作成中、Full-Text Engine により、フルテキスト インデックスからストップワードが除外されます。 つまり、フルテキスト クエリでは、ストップワードが検索されません。
ストップワード」を参照してください。 ストップワードには、特定の言語で意味を持つ単語を指定できます。 たとえば、英語では、"a"、"and"、"is"、"the" などの単語は、検索に役立たないことが知られているため、フルテキスト インデックスから除外されます。 また、ストップワードは言語的な意味を持たないトークンでも構いません。
ストップリスト。 ストップワードは、ストップリストと呼ばれるオブジェクトを使用してデータベースで管理されます。 ストップリスト は、フルテキスト インデックスに関連付けられている場合、そのインデックスのフルテキスト クエリに適用されるストップワードの一覧です。
既存のストップリストを使用する
既存のストップリストは、次の方法で使用できます。
データベースにシステムによって用意されたストップリストを使用します。 SQL Server には、よく使用されるストップワードを含むシステム ストップリストが、サポート対象の言語ごとに用意されています。つまり、既定で、特定のワード ブレーカーに関連付けられている言語ごとにストップリストが用意されています。 システム ストップリストをコピーし、ストップワードを追加したり削除したりして、そのコピーをカスタマイズできます。
システム ストップリストは Resource データベースにインストールされます。
現在のサーバー インスタンスで他のデータベースの既存のカスタム ストップリストを使用して、適宜、ストップワードを追加および削除します。
新しいストップリストを作成する
Transact SQL で新しいストップリストを作成する
CREATE FULLTEXT STOPLIST を使用します。
Management Studio で新しいストップリストを作成する
オブジェクト エクスプローラーで、サーバーを展開します。
[データベース]を展開し、フルテキスト ストップリストを作成する対象のデータベースを展開します。
[ストレージ]を展開し、 [フルテキスト ストップリスト]を右クリックします。
[新しいフルテキスト ストップリスト]をクリックします。
新しいストップリストの名前を入力します。
必要に応じて、他のユーザーをストップリストの所有者として指定します。
次に示すストップリスト作成オプションのいずれかを選択します。
[空のストップリストを作成する]
[システム ストップリストから作成する]
[既存のフルテキスト ストップリストから作成する]
詳細については、「新しいフルテキスト ストップリスト ([全般] ページ)」を参照してください。
[OK] を選択します。
フルテキスト クエリでのストップリストの使用
クエリでストップリストを使用するには、ストップリストをフルテキスト インデックスに関連付ける必要があります。 インデックスの作成時にストップリストをフルテキスト インデックスにアタッチしたり、後でインデックスを変更してストップリストを追加したりできます。
フルテキスト インデックスを作成してストップリストを関連付ける
CREATE FULLTEXT INDEX (Transact-SQL) を使用します。
既存のフルテキスト インデックスに対してストップリストの関連付けまたは関連付け解除を行う
ALTER FULLTEXT INDEX (Transact-SQL) を使用します。
ストップリストのストップワードの変更
Transact-SQL でストップリストからストップワードを追加または削除する
ALTER FULLTEXT STOPLIST (Transact-SQL) を使用します。
Management Studio でストップリストからストップワードを追加または削除する
オブジェクト エクスプローラーで、サーバーを展開します。
[データベース]を展開し、データベースを展開します。
[ストレージ]を展開し、 [フルテキスト ストップリスト]をクリックします。
プロパティを変更するストップリストを右クリックし、 [プロパティ]をクリックします。
[フルテキスト ストップリストのプロパティ] ダイアログ ボックスで:
[アクション] ボックスの一覧で、 [ストップワードの追加]、 [ストップワードの削除]、 [すべてのストップワードの削除]、 [ストップリストのクリア]のいずれかのアクションを選択します。
選択したアクションに対して [ストップワード] ボックスが有効になっている場合は、単一のストップワードを入力します。 このストップワードは一意である必要があります。つまり、選択した言語で、このストップリストにまだ含まれていないものである必要があります。
選択したアクションに対して [フルテキスト言語] ボックスの一覧が有効になっている場合は、言語を選択します。
[OK] を選択します。
ストップ リストとその使用の管理
ストップリスト内のすべてのストップワードの表示
sys.fulltext_stopwords (Transact-SQL) を使用します。
現在のデータベース内にあるすべてのストップリストに関する情報を取得する
sys.fulltext_stoplists (Transact-SQL) と sys.fulltext_stopwords (Transact-SQL) を使用します。
ワード ブレーカー、類語辞典、ストップリストの組み合わせによるトークン化の結果を表示する
sys.dm_fts_parser (Transact-SQL) を使用します。
ストップワードが原因でフルテキスト クエリのブール演算が失敗する場合に、エラー メッセージを非表示にする
transform noise words サーバー構成オプション を使用します。
ストップ ワードの位置に関する詳細情報
含まれるストップワードは無視されますが、フルテキスト インデックスではその位置が考慮されます。 たとえば、"Instructions are applicable to these Adventure Works Cycles models" という句があるとします。 以下のテーブルは、句の中の語の位置を表しています。
Word | 配置 |
---|---|
手順 | 1 |
are | 2 |
applicable | 3 |
to | 4 |
these | 5 |
Adventure | 6 |
Works | 7 |
サイクル | 8 |
モデル | 9 |
位置 2、4、および 5 にあるストップワード "are"、"to"、"these" は、フルテキスト インデックスから除外されます。 ただし、その位置情報は保持されるため、語句内の他の語の位置は変わりません。
SQL Server 2005 からのノイズ ワードのアップグレード
SQL Server 2005 (9.x) ノイズ ワードはストップワードに置き換えられました。 データベースが SQL Server 2005 (9.x) からアップグレードされると、ノイズ ワード ファイルは使用されなくなります。 ただし、ノイズ ワード ファイルは FTDATA\ FTNoiseThesaurusBak フォルダーに保存され、後で更新する際、または対応するストップリストを作成する際に使用できます。 ノイズ ワード ファイルをストップリストにアップグレードする方法の詳細については、「 フルテキスト検索のアップグレード」を参照してください。