適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric の SQL データベース
特定の ワード ブレーカー、 類義語辞典、および ストップリスト の組み合わせをクエリ文字列入力に適用した後、最終的なトークン化の結果を返します。 トークン化の結果は、指定されたクエリ文字列のフルテキスト エンジンの出力と同じです。
sys.dm_fts_parser は動的管理機能です。
Syntax
sys.dm_fts_parser (
'query_string'
, lcid
, stoplist_id
, accent_sensitivity
)
引数
query_string
解析するクエリ。 query_stringは、CONTAINS 構文サポートを文字列チェーンにすることができます。 たとえば、変化形、類義語辞典、および論理演算子を含めることができます。
lcid
query_stringの解析に使用するワード ブレーカーのロケール識別子 (LCID)。
stoplist_id
ストップリストの ID (存在する場合) は、 lcid で識別されるワード ブレーカーによって使用されます。
stoplist_id知力です。「NULL」と指定すると、ストップリストは使われません。 0を指定する場合は、システム STOPLIST が使われます。
ストップリスト ID は、データベース内で一意です。 特定のテーブルのフルテキスト インデックスのストップリスト ID を取得するには、 sys.fulltext_indexes カタログ ビューを使用します。
accent_sensitivity
フルテキスト検索で分音文字を区別するかしないかを制御するブール値です。 accent_sensitivity は ビットで、次のいずれかの値があります。
| 値 | アクセントの感度は... |
|---|---|
| 0 | 大文字と小文字は区別されない 「カフェ」や「カフェ」などの単語は同じように扱われます。 |
| 1 | 機密 「カフェ」や「カフェ」などの単語は扱い方が異なります。 |
Note
フルテキスト カタログのこの値の現在の設定を表示するには、次の Transact-SQL ステートメントを実行します: SELECT fulltextcatalogproperty('<catalog_name>', 'AccentSensitivity');。
返されるテーブル
| 列名 | データの種類 | Description |
|---|---|---|
keyword
1 |
varbinary (128) | ワード ブレーカーによって返される特定のキーワードの 16 進数表現。 この表記は、フルテキスト インデックスにキーワードを格納するために使用します。 この値は人間が読み取れるものではありませんが、 sys.dm_fts_index_keywords や sys.dm_fts_index_keywords_by_documentなど、全文インデックスの内容を返す他の動的管理ビューの出力と特定のキーワードを関連付けるのに役立ちます。 |
group_id |
int | 特定の用語が生成された論理グループを区別するのに役立つ整数値が含まれています。 例えば、 Server AND DB OR FORMSOF(THESAURUS, DB) は英語で以下の group_id 値を生成します。1:サーバー2:DB3:DB |
phrase_id |
int | ワード ブレーカーによって代替形式の複合語 (フルテキストなど) が発行されるケースを区別するために役立つ整数値が含まれます。 複合語 ('multi-million' など) が存在する場合、ワード ブレーカーによって代替形式が発行されることがあります。 このような代替形式 (語句) は区別が必要になる場合があります。 例えば、 multi-million は英語で以下の phrase_id 値を生成します。1 (multi) 1 (million) 2 (multimillion) |
occurrence |
int | 解析結果の各用語の順序を示します。 例えば、 SQL Server query processor occurrenceというフレーズの場合、英語ではそのフレーズ内の用語の出現値が次のように表されます。SQL: 12 は Server3 は queryprocessor: 4 |
special_term |
nvarchar (4000) | ワード ブレーカーによって発行されている用語の特性に関する情報を格納します。次のいずれかになります。 - 完全一致 - ノイズ ワード - 文末 - 段落の末尾 - 章の終わり |
display_term |
nvarchar (4000) | 人間が判読できるキーワードの形式を格納します。 フルテキスト インデックスのコンテンツにアクセスするように設計されている関数と同様に、ここに表示される用語は、非正規化の制限のため元の用語と同一とは限りません。 ただし、元の入力から識別するのに十分な精度が必要です。 |
expansion_type |
int | 特定の用語の拡張の特性に関する情報を格納します。次のいずれかになります。 0 = 単一の単語の大文字と小文字 2 = 変曲拡張 4 = 類義語辞典の拡張/置換 たとえば、類義語辞典で run が jog の拡張として定義されている場合を考えてみます。<expansion><sub>run</sub><sub>jog</sub></expansion>FORMSOF (FREETEXT, run)という用語では、次の出力が生成されます。run expansion_type = 0 の場合runs
expansion_type = 2running
expansion_type = 2ran
expansion_type = 2jog
expansion_type = 4 |
source_term |
nvarchar (4000) | 特定の用語の生成元または解析元になった用語または語句です。 たとえば、 '"word breakers" AND stemmers' のクエリでは、英語で次の source_term 値が生成されます。word breakers
display_term用 wordword breakers
display_term用 breakersstemmers
display_term用 stemmers |
10xFF ファイルやデータセットの終わりを示す特殊文字を表します。
注釈
sys.dm_fts_parserでは、CONTAINS、FREETEXT、CONTAINSTABLEFREETEXTTABLE などの関数など、フルテキスト述語の構文と機能がサポート。
特殊文字の解析に Unicode を使用する
クエリ串を解析する際、 sys.dm_fts_parser 接続しているデータベースの照合を使います。ただし、クエリ文字列をUnicodeで指定しない限り。 したがって、ü や ç などの特殊文字を含む Unicode 以外の文字列の場合、データベースの照合順序によっては、出力が予期しない可能性があります。 クエリ文字列をデータベースの整合とは独立して処理するには、文字列の前に N、すなわち N'<query_string>' を付けます。
詳細については、 C を参照してください。特殊文字を含む文字列の出力を表示します この記事の後半で説明します。
sys.dm_fts_parserを使用するタイミング
sys.dm_fts_parser は、デバッグの目的で強力である可能性があります。 主な使用シナリオには、次のようなものがあります。
特定のワード ブレーカーが特定の入力をどのように処理するかを理解するには
クエリから予期しない結果が返されると、ワード ブレーカーがデータを解析して中断する方法が原因である可能性があります。
sys.dm_fts_parserを使用すると、ワード ブレーカーがフルテキスト インデックスに渡される結果を検出できます。 さらに、フルテキスト インデックスで検索されないストップワードの用語を確認できます。 ある言語のストップワードであるかどうかは、関数で宣言されるストップ stoplist_id リストに含まれているかどうかによって決まります。アクセントの秘密度フラグを使用すると、ワード ブレーカーが入力を解析する方法を確認できます。アクセントの秘密度情報を念頭に置きます。
特定の入力でステマーがどのように機能するかを理解するには
ワードブレーカーとステマーがクエリ語とその語幹形式をどのように解析するかは、以下の
FORMSOF節を含むCONTAINSまたはCONTAINSTABLEクエリを指定することでわかります。FORMSOF ( INFLECTIONAL, <query_term> )この結果から、フルテキスト インデックスに渡されている用語がわかります。
類義語辞典が入力の全部または一部を拡張または置換する方法を理解するには
次を指定することもできます。
FORMSOF ( THESAURUS, <query_term> )このクエリの結果は、ワード ブレーカーと類義語辞典がクエリ用語に対してどのように対話するかを示しています。 類義語辞典から拡張または置換を確認し、フルテキスト インデックスに対して実際に発行されているクエリを特定することができます。
ユーザーが発行した場合:
FORMSOF ( FREETEXT, <query_term> )変曲および類義語辞典の機能は自動的に行われます。
上記の使用シナリオに加えて、 sys.dm_fts_parser はフルテキスト クエリに関する他の多くの問題を理解し、トラブルシューティングするのに大きく役立ちます。
Permissions
CREATE FULLTEXT CATALOG許可と指定されたストップリストへのアクセス権が必要です。
Examples
A. キーワードまたは語句の特定のワード ブレーカーの出力を表示する
次の例では、LCID が 1033 で、次のクエリ文字列にストップリストがない英語のワード ブレーカーを使用して出力を返します。
The Microsoft business analysis
アクセントの区別は無効になっています。
SELECT *
FROM sys.dm_fts_parser(' "The Microsoft business analysis" ', 1033, 0, 0);
B. ストップリスト フィルター処理のコンテキストで特定のワード ブレーカーの出力を表示する
次の例では、次のクエリ文字列で、LCID が 1033 の英語ワード ブレーカーと、ID が 77 の英語ストップリストの使用からの出力を返します。
"The Microsoft business analysis" OR "MS revenue"
アクセントの区別は無効になっています。
SELECT *
FROM sys.dm_fts_parser(' "The Microsoft business analysis" OR " MS revenue" ', 1033, 77, 0);
C. 特殊文字を含む文字列の出力を表示する
次の例では、Unicode を使用して次のフランス語の文字列を解析します。
français
この例では、フランス語の LCID として 1036 と、ユーザー定義のストップリストの ID として 5 を指定します。 アクセントの秘密度が有効になっています。
SELECT *
FROM sys.dm_fts_parser(N'français', 1036, 5, 1);