2008-11-13 156 views
15

使用Lucene,可以檢索索引中包含的術語,即索引中包含文檔的唯一詞幹單詞(不包括停用詞)。這對於生成其他內容中的自動填充建議非常有用。 MS SQL Server全文索引可能類似嗎?檢索SQL Server全文索引術語

回答

18

您可以使用SQL Server 2008中的新系統視圖爲您提供條款和出現次數,這是你想要的嗎?

sys.dm_fts_index_keywords_by_document 
( 
    DB_ID('database_name'),  
    OBJECT_ID('table_name') 
) 

您需要提供全文表格的db_id和object_id。這是這個MSDN鏈接。

http://msdn.microsoft.com/en-us/library/cc280607.aspx

6

我同意,這信息(在索引的話,朵朵字等)是有用的 - 如果SQL Server是認真提供一個平臺serch主頁,需要暴露這些信息。據我所知,它在以前的版本中確實不可用。但是,SQL Server 2008中的遊戲更改。

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。

我希望你指出正確的方向。乾杯。

0

sys.dm_fts_index_keywords返回索引條目列表,附加統計信息,而不是由於sys.fulltext_stopwords而重新建立的噪音詞列表。

1

通過以下您可以將表名和列名作爲變量。 它將在當前運行的數據庫上工作,省略文件結果的結尾,並按結果降序排列。

注意,全文索引必須在表和列

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 
啓用