Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 包含稳定的添加';of*';不返回任何结果_Sql_Sql Server_Sql Server 2008_Containstable - Fatal编程技术网

Sql 包含稳定的添加';of*';不返回任何结果

Sql 包含稳定的添加';of*';不返回任何结果,sql,sql-server,sql-server-2008,containstable,Sql,Sql Server,Sql Server 2008,Containstable,我在SQL server 2008上有一个containstable查询: SELECT contacts.*, [Rank] FROM CONTAINSTABLE(Contacts, SearchName, '("department*") AND ("work*")') tmp JOIN contacts on contacts.contactid = tmp.[key] WHERE contacts.deleted = 0 这将按预期返回1个结果,但是如果用户在其搜索条件中输入了“o

我在SQL server 2008上有一个containstable查询:

SELECT contacts.*, [Rank] FROM 
CONTAINSTABLE(Contacts, SearchName, '("department*") AND ("work*")') tmp 
JOIN contacts on contacts.contactid = tmp.[key]
WHERE contacts.deleted = 0
这将按预期返回1个结果,但是如果用户在其搜索条件中输入了“of”,则查询不会返回任何结果:

SELECT contacts.*, [Rank] FROM 
CONTAINSTABLE(Contacts, SearchName, '("department*") AND ("of*") AND ("work*")') tmp 
JOIN contacts on contacts.contactid = tmp.[key]
WHERE contacts.deleted = 0
联系记录的全称为“工作和养老金部”


如果用户在搜索中包含“and”,也会发生同样的情况。为什么这些词会破坏查询,有没有办法绕过它,或者在执行搜索之前我必须去掉这些词

你需要学习停止词。这些都在本文中得到了很好的解释

不过,简短的解释是,所有全文引擎都保留一个未编入索引的单词列表。这些词中最突出的是“of”、“the”和类似的不包含内容的词。当然,您可以将服务器配置为实际识别这些单词。这在某些应用程序中非常重要:当试图确定文档的语言时,停止词恰好非常有用

在任何情况下,“of”一词都在停止词列表中。因此它没有索引,您无法使用
CONTAINSTABLE
找到它。如果您需要搜索它,您可以实现自己的自定义停止词列表并重建索引