问题描述
我有一个 sql Server 全文搜索索引我的一个表中的两列。
我正在根据用户的输入从 Web 前端提取建议的关键字。这样输入像'ban'这样的词组会产生banana、banish、urban、等词>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 (将#修改为@)