Sql server SQL Server全文索引包含搜索精确匹配,其中包含;它";

Sql server SQL Server全文索引包含搜索精确匹配,其中包含;它";,sql-server,full-text-search,containstable,Sql Server,Full Text Search,Containstable,我对SQL server中的全文索引相当陌生。不过,最近有人对“It经理”进行了精确匹配搜索,搜索中的“It”部分似乎被忽略了 e、 g 及 返回相同的结果。我做错了什么?“并不意味着完全匹配。它只是在文本中查找该短语 如果我有价值 大红楼 示例匹配 "big red house" "big" "house" "red house" 不匹配的示例 "the big yellow" 如果您只需要“TheBigRedHouse”匹配,那么您最好在该列上创建一个非聚集索引,并使用正则=谓词。问题是

我对SQL server中的全文索引相当陌生。不过,最近有人对“It经理”进行了精确匹配搜索,搜索中的“It”部分似乎被忽略了

e、 g

返回相同的结果。我做错了什么?

“并不意味着完全匹配。它只是在文本中查找该短语

如果我有价值 大红楼

示例匹配

"big red house"
"big"
"house"
"red house"
不匹配的示例

"the big yellow"

如果您只需要“TheBigRedHouse”匹配,那么您最好在该列上创建一个非聚集索引,并使用正则=谓词。问题是全文引擎将“it”视为“noise”或“stop-word”,并忽略它

假设您使用的是SQL 2008+,那么请参阅此处有关停止列表和停止字的文档:

这些列表包含各种语言中的各种“填充”词(例如“a”、“it”等),在全文搜索中通常不有用,因此会被忽略

我的经验是,这些默认列表对于搜索更大的文本体非常有用,但对于需要更具体的产品(甚至是工作)标题等内容,它们通常不太有用

您可以创建自己的停止列表,其中包含(或不包含)适合您特定需要的任何停止词

对于职位搜索来说,在特定的栏目中完全不使用停止词可能是合适的。创建索引时,可以选择与特定全文索引关联的停止列表(包含停止字)。如果需要,您可以创建一个空列表,并仅在一列的索引中使用它(尽管您必须调整查询以考虑这一点)


如果您使用的是SQL 2005或更低版本,那么它将使用一个更原始的“噪音词”系统,该系统只保存在一个文本文件中:

OK谢谢。我可以看出我误解了引号的作用。虽然它仍然适合我的需要。我不能只使用=,因为它可以包含在任何地方。类似“%IT Manager%”的应用程序可以完成这项工作,但在大多数情况下,我需要全文搜索的功能。搜索来自关键字框。这不是正确答案。“it”是一个噪音词@beercohol+1感谢。我得检查一下。搜索实际上是搜索应聘者的简历,而不是一个职位列表网站。我们使用SQL server 2014。非常感谢。你关于停止名单的建议正是我需要的。。。虽然我想知道现在把它删除是否是个好主意:)没问题,很乐意帮忙!我发现使用一个空的停止列表对于像标题这样需要精确搜索的东西很有效。对于较大的文本体,您通常希望消除干扰词以保持结果的相关性。
"big red house"
"big"
"house"
"red house"
"the big yellow"