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

时间:2014-07-14 15:06:40

标签: sql sql-server full-text-search contains containstable

我正在使用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')

我已经阅读了CONTAINS上的MSDN页面和全文索引,但我无法弄清楚这种行为。我一定做错了什么。是否有人能够向我解释发生了什么以及如何进行我所描述的搜索?

谢谢!

1 个答案:

答案 0 :(得分:2)

虽然这可能不是 的答案,但它解决了我原来的问题。我的全文索引使用的是系统停止列表。无论出于何种原因,某些个别数字,例如" 1"在"测试1",被跳过或停止列表的任何内容。

以下问题和答案,在这里,建议完全禁用停止列表。我这样做了,现在我的全文搜索符合我的预期,但是以更大的全文索引为代价,它看起来像。

Full text search does not work if stop word is included even though stop word list is empty