小编典典

为什么SQL Server全文搜索不匹配数字?

sql

我正在使用SQL Server 2014 Express,并且在表上有全文索引设置。

全文索引仅索引单个列,在本示例中名为foo

该表中有3行。全文索引列的3行中的值如下所示…

test 1
test 2
test 3 test 1

上面的每一行都是表中的新行,而该文本实际上就是全文索引列中的内容。因此,使用SQL
Server的CONTAINS功能,如果执行以下查询,则可以按预期将所有行返回为匹配项。

SELECT * FROM example WHERE CONTAINS(foo, 'test')

但是,如果我运行以下查询,我也将所有行都作为匹配项返回,这是我所不希望的。在以下查询中,我只希望将一行作为匹配项。

SELECT * FROM example WHERE CONTAINS(foo, '"test 3"')

最后,仅搜索“ 3”不会返回任何匹配的行,这也是我所没有想到的。我希望从下面的查询中找到一个匹配的行,但是什么也没有。

SELECT * FROM example WHERE CONTAINS(foo, '3')

我已经阅读了MSDN页面CONTAINS和全文索引,但是我无法弄清楚这种现象。我一定做错了什么。

有人可以向我解释发生了什么以及如何执行我描述的搜索吗?


阅读 212

收藏
2021-04-22

共1个答案

小编典典

虽然这可能不是 答案,它解决了我原来的问题。我的全文索引正在使用系统停止列表。出于某种原因,某些单独的数字(例如“测试1”中的“
1”)将被跳过,或者停止列表会执行任何操作。

以下关于SO的问题和答案建议一起禁用停止列表。我这样做了,现在我的全文本搜索符合我的期望,但看起来却像一个更大的全文本索引。

即使停用词列表为空,如果包含停用词,全文搜索也不起作用

2021-04-22