SQL Server 全文索引 包含包含"it"的搜索完全匹配项



我对SQL server中的全文索引相当陌生。然而,它对我来说一直很有效,最近有人对"It经理"进行了精确匹配的搜索,搜索中的"It"部分似乎被忽略了。

例如

SELECT * FROM CONTAINSTABLE(vCandidateSearch, SearchText, '"it manager"') 

SELECT * FROM CONTAINSTABLE(vCandidateSearch, SearchText, '"manager"') 

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

问题是全文引擎将"it"视为"噪音"或停止字,并忽略它

假设您使用的是SQL 2008+,请参阅此处关于非索引字表和停止字的文档:https://msdn.microsoft.com/en-us/library/ms142551(v=sql.100).aspx

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

我的经验是,这些默认列表非常适合搜索更大的文本,但对于需要更具体的产品(或职位)标题之类的东西来说往往不那么有用。

您可以创建自己的非索引字表,其中包含(或不包含)任何适合您特定需求的非索引字。

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

如果您使用的是SQL 2005或更低版本,它会使用一个更原始的"噪声词"系统,这些系统只保存在一个文本文件中:https://msdn.microsoft.com/en-us/library/ms142551(v=sql.90).aspx

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

如果我有一个值红色大房子

示例匹配

"big red house"
"big"
"house"
"red house"

不匹配示例

"the big yellow"

如果您只需要"大红屋"匹配,那么您最好在该列上创建一个非聚集索引,并使用正则=谓词

最新更新