为什么我的单字符全文搜索无效?

时间:2015-01-30 19:18:29

标签: sql-server full-text-search sql-server-2014

鉴于此代码,我没有收到任何结果:

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

我检查过的事情:

  • 更长的单词会返回结果
  • 没有与此索引关联的停止列表
  • 栏目
  • 中肯定有“James W Brown”等文字
  • 全文索引是最新的。

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

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

Full text Search是执行Language Specific Search的功能。

搜索可以忽略数据中的文字字符串,并搜索特定于某种语言的语言中的特定单词(特定单词的折衷形式,同义词等)。

在您的查询中,您正在寻找字母“W",这不是一个英文单词,它是一个字母表,但它并不代表任何东西。它更像是一个字符串中的图案用于此目的您应该使用LIKE关键字以及通配符%,这将带回字符串值James W Brown

另一方面,如果您想使用FTS在数据库中找到所有可能的James,那么FTS可以很方便。通过在James上进行THESAURUS搜索,可以恢复Jim,Jimmy,Jimmie等,但是你必须再次编辑FDData下的XML文件以获得特定语言才能实现。