为什么我的单字符全文搜索不起作用?

Why isn't my single-character full text search working?

鉴于此代码,我没有返回任何结果:

SELECT TOP 10 * FROM MyTable WHERE CONTAINS(TextColumn, '"W"')

我检查过的东西:

编辑:我正在寻找与索引关联的停止列表,而不是停止词。

Full text Search是做Language Specific Search的一个特征。

搜索可能会忽略数据中的文字字符串并搜索特定语言中的特定词,(特定词的屈折形式,同义词等)特定于一种语言。

在您的查询中,您正在寻找字母“W",它不是英语单词,它是一个字母表,但单独没有任何意义。它更像是字符串中的模式为此,您应该使用 LIKE 关键字和通配符 %,这将返回字符串值 James W Brown

另一方面,如果您想使用 FTS 在数据库中查找所有可能的 James,那么 FTS 会很方便。通过对 James 进行 THESAURUS 搜索,这将带回 Jim、Jimmy、Jimmie 等,但随后您将不得不再次编辑 FDData 下的 XML 文件以获得特定语言以实现此目的。

答案是确保您有一个与索引关联的空停止列表。仅仅没有停止列表是不够的,因为它只会使用默认的停止列表。

CREATE FULLTEXT STOPLIST [EmptyStopList] ;
GO
ALTER FULLTEXT INDEX ON MyTable SET STOPLIST [EmptyStopList]