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