2

我有一个全文索引的数据库表,我使用 CONTAINS 函数对其执行搜索查询。

当我做:

SELECT * FROM Plants WHERE CONTAINS(Plants.Description, '"Plant*" AND "one*"');

我得到所有与“植物”和“一个”字样的描述匹配的正确结果。

有些植物被命名为“植物 1”、“植物 2”等,这就是问题所在。

当我这样做时,我没有得到任何结果:

SELECT * FROM Plants WHERE CONTAINS(Plants.Description, '"Plant*" AND "1*"');

有谁知道为什么?

4

2 回答 2

2

有一个在关键字搜索中未编入索引的常用词列表,例如“and”和“the”。

我相信文本“1”也出现在该列表中。因此它不会出现在索引中,也无法通过 CONTAINS 子句找到。

如果我没记错的话,有一个管理界面可以让你编辑常用词列表。几年前,我尝试过一次编辑它,但我记得在我这样做之后很难分辨出差异。

于 2010-03-25T13:31:01.503 回答
0

大安是对的。在*1. 在搜索词的任一侧放置通配符会在整个字符串中搜索搜索词,无论其位置如何。

于 2010-03-25T13:24:23.403 回答