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

为什么SQL Server全文搜索与数字不匹配?,sql,sql-server,full-text-search,contains,containstable,Sql,Sql Server,Full Text Search,Contains,Containstable,我正在使用SQL Server 2014 Express,并在表上设置了全文索引 全文索引只对单个列进行索引,在本例中名为foo 这张桌子有三行。该全文索引列的3行中的值如下所示 test 1 test 2 test 3 test 1 上面的每一行都是表中的新行,该文本实际上就是全文索引列中的内容。因此,使用SQL Server的CONTAINS函数,如果执行以下查询,我会按预期将所有行作为匹配项返回 SELECT * FROM example WHERE CONTAINS(foo, 'tes

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

全文索引只对单个列进行索引,在本例中名为
foo

这张桌子有三行。该全文索引列的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页面,其中包含
和全文索引,但我无法理解这种行为。我一定是做错了什么

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

虽然这可能不是答案,但它解决了我最初的问题。我的全文索引使用的是系统停止列表。无论出于何种原因,某些单独的数字,例如“测试1”中的“1”被跳过,或者不管停止列表做了什么

下面的问答建议一起禁用禁止列表。我做到了这一点,现在我的全文搜索结果和我预期的一样匹配,但却牺牲了一个更大的全文索引


我怀疑数字是停止词-没有索引。我怀疑停止词太短或使用频繁都是原因。啊,是的,是停止词。谢谢你的链接。