当搜索字符串中存在任何干扰词时,SQL 全文搜索不会返回结果

标签 sql sql-server sql-server-2005 full-text-search

我有一个 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/

相关文章:

c# - 使用 SqlConnection 打开 DataReader 错误

c# - SQL LIKE % NOT SEARCHING

sql-server-2005 - SQL 搜索另一个表中的行

sql - 使用 Union 和 string_split() 时子查询返回超过 1 个值

mysql - 如何搭建SQL测试环境?

Mysql Workbench - 在开发过程中组织运行频繁使用的 SQL 查询的最佳方式

php - 查询 mssql 数据库分页返回错误

SQL Server - 101 和 11 的组位模式

sql - 带有附加数据的主键

sql - 现实生活中的示例,何时在 SQL 中使用 OUTER/CROSS APPLY