Lucene を使用すると、インデックス内に含まれる用語、つまり、インデックス内のドキュメントに含まれる、ストップ ワードを除く一意の語幹抽出された単語を取得できます。これは、特にオートコンプリートの提案を生成するのに役立ちます。MS SQL Server のフルテキスト インデックスで同様のことが可能ですか?
4 に答える
SQL Server 2008の新しいシステムビューを使用して、用語と発生回数を取得できます。これは必要ですか?
sys.dm_fts_index_keywords_by_document
(
DB_ID('database_name'),
OBJECT_ID('table_name')
)
フルテキストテーブルのdb_id
とを指定する必要があります。object_id
これは、このためのMSDNリンクです:sys.dm_fts_index_keywords_by_document。
この情報(インデックス内の単語、語幹の単語など)が役立つことに同意します。SQLServerが検索プラットフォームの提供に真剣に取り組んでいる場合は、この情報を公開する必要があります。私の知る限り、以前のバージョンでは実際には利用できません。ただし、SQLServer2008ではゲームが変更されています。
SQL Server 2008は、フルテキストのこのメタデータを提供する新しい動的管理ビューを提供します。sys.dm_fts_parserとsys.dm_fts_index_keywordsに特に注意してください。
sys.dm_fts_parserビューは、他のいくつかのパラメーターとともにフレーズを受け取り、行セットを示すテーブルを出力します。これは、ワードブレーカーが個々の単語を個別の単語と見なした後の個々の単語の語幹バージョンを示します。
MSDNは、ビューに対するこのクエリの例を示しています。
SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis" ', 1033, 0, 0)
キーワードを取得するには、sys.dm_fts_index_keywordsを使用できます。
それがあなたを正しい方向に向けてくれることを願っています。乾杯。
以下を使用すると、テーブル名と列名を変数として取得できます。実行されている現在のデータベースで機能し、ファイルの終わりの結果を省略し、結果を出現回数の降順で並べ替えます。
そのテーブルと列で全文索引付けを有効にする必要があることに注意してください
DECLARE @TableName NVARCHAR(200) = 'MyTable'
DECLARE @ColumnName NVARCHAR(200) = 'MyColumn'
SELECT DISTINCT(display_term), occurrence_count FROM sys.dm_fts_index_keywords_by_document
(
DB_ID(),
OBJECT_ID(@TableName)
)
WHERE column_id =
(
SELECT TOP 1 col.column_id FROM sys.objects obj
INNER JOIN sys.columns col ON col.object_id = obj.object_id
WHERE obj.name = @TableName
AND col.name = @ColumnName
)
AND keyword != 0xFF
ORDER BY occurrence_count DESC