使用 SQL Server 的全文搜索优化关键字检索

问题描述

我有一个 sql Server 全文搜索索引我的一个表中的两列。

我正在根据用户的输入从 Web 前端提取建议的关键字。这样输入像'ban'这样的词组会产生bananabanishurban等词>husband 等。然后用户会点击这些词之一来确认他们的选择,或者添加更多字母来缩小他们的搜索范围。

我有以下总关键字数,如以下查询所示:

SELECT COUNT(*) FROM sys.dm_fts_index_keywords ( DB_ID(),OBJECT_ID('Search'))

217,998

因此,在查询关键字时,我有如下查询

SELECT TOP 10 *,display_term,document_count 
FROM sys.dm_fts_index_keywords ( DB_ID(),OBJECT_ID('Search'))
WHERE column_id=5 
AND keyword != 0xFF 
AND display_term like '%ban%' 
AND display_term NOT LIKE 'nn%'

但是,目前这需要大约 30 秒才能运行!显然,这太慢了,没有任何用处。

因此,作为一种解决方法,我创建了自己的关键字表来存储我的关键字。每当我将内容添加到我的全文搜索表时,我都会在下面运行查询以找出哪些关键字将被编入索引:

SELECT display_term AS Term,COUNT(display_term) AS [Count] 
FROM sys.dm_fts_parser('"There are many types of fruit,including apples,bananas and cherries." ',1033,0)
WHERE display_term NOT LIKE 'nn%' 
AND special_term NOT IN ('Noise Word','End of Sentence')
GROUP BY display_term

然后我将这些词存储到我自己的关键字表中,供上述 Web 前端稍后使用。这要快得多。

但是,我不禁觉得我不需要创建解决方法,而且查找关键字是许多人需要做的事情。

搜索sql Server 中包含的其他方法、表或其他功能,但都无济于事。

我还研究了索引 sys.dm_fts_index_keywords 表。但是,由于主题的性质,搜索“索引”一词是有问题的。

有没有人有另一种方法可以快速执行,并且希望也需要较少的程序干预?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)