我有一个 asp.net 网页,用于使用 FTS 在我们的数据库中搜索公司名称。他们在搜索框中输入公司名称并提交。
首先,我修剪所有前导或尾随空格,然后用“NEAR ”替换每个内部空格。
所以搜索:
"The Association of Lefthanded Picklepickers"
喂养方式为:
"The NEAR Association NEAR of NEAR Lefthanded NEAR Picklepickers"
进入搜索结果网格使用的以下 WHERE 子句:
WHERE CONTAINS(CompanyName, @Search)
此方法可以完美运行,直到干扰词(the、is、and、to 等)成为用户搜索的一部分。发生这种情况时,SQL 服务器不会返回搜索结果。在上述搜索的情况下,即使数据库中存在具有确切名称的公司,单词“of”也会中断搜索。
我应该怎样做才能克服这个问题?
非常感谢您的想法和建议!
最佳答案
尝试使用此处所述的变换干扰词选项:http://technet.microsoft.com/en-us/library/ms187914(SQL.90).aspx
sp_configure 'show advanced options', 1
RECONFIGURE
GO
sp_configure 'transform noise words', 1
RECONFIGURE
GO
关于当搜索字符串中存在任何干扰词时,SQL 全文搜索不会返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3113519/