使用Lucene,可以检索索引中包含的术语,即索引中包含的文档中唯一的词干词,不包括停用词。这对于生成自动完成建议等很有用。 MS SQL Server全文索引可能类似吗?
答案 0 :(得分:19)
您可以使用SQL Server 2008中的新系统视图来获取出现的术语和计数,这是您想要的吗?
sys.dm_fts_index_keywords_by_document
(
DB_ID('database_name'),
OBJECT_ID('table_name')
)
您需要提供全文表的db_id和object_id。这是MSDN的链接。
答案 1 :(得分:7)
我同意这些信息(索引中的单词,词干等)是有用的 - 如果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。
我希望指出你正确的方向。欢呼声。
答案 2 :(得分: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
答案 3 :(得分:0)
sys.dm_fts_index_keywords
返回包含附加统计信息的索引字词列表,而不是由于sys.fulltext_stopwords
而重新生成的干扰字列表。