为什么我的单字符全文搜索不起作用?
Why isn't my single-character full text search working?
鉴于此代码,我没有返回任何结果:
SELECT TOP 10 * FROM MyTable WHERE CONTAINS(TextColumn, '"W"')
我检查过的东西:
- 较长的单词return一个结果
- 没有与该索引关联的停止列表
列中肯定有"James W Brown"等文字
- 全文索引是最新的。
编辑:我正在寻找与索引关联的停止列表,而不是停止词。
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]
鉴于此代码,我没有返回任何结果:
SELECT TOP 10 * FROM MyTable WHERE CONTAINS(TextColumn, '"W"')
我检查过的东西:
- 较长的单词return一个结果
- 没有与该索引关联的停止列表 列中肯定有"James W Brown"等文字
- 全文索引是最新的。
编辑:我正在寻找与索引关联的停止列表,而不是停止词。
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]