Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 为什么不是';我的单字符全文搜索不起作用吗?_Sql Server_Full Text Search_Sql Server 2014 - Fatal编程技术网

Sql server 为什么不是';我的单字符全文搜索不起作用吗?

Sql server 为什么不是';我的单字符全文搜索不起作用吗?,sql-server,full-text-search,sql-server-2014,Sql Server,Full Text Search,Sql Server 2014,根据这段代码,我没有得到任何结果: SELECT TOP 10 * FROM MyTable WHERE CONTAINS(TextColumn, '"W"') 我检查过的东西: 长单词返回结果 没有与此索引关联的停止列表 专栏中肯定有“詹姆斯·W·布朗”这样的文字 全文索引是最新的 编辑:我正在查找与索引关联的停止列表,而不是停止词。全文搜索是一项功能,用于执行特定语言搜索 搜索可能会忽略数据中的文字字符串,并搜索语言中特定的单词(特定单词的屈折形式、同义词等),这是特定于语言的 在您的

根据这段代码,我没有得到任何结果:

SELECT TOP 10 * FROM MyTable WHERE CONTAINS(TextColumn, '"W"')
我检查过的东西:

  • 长单词返回结果
  • 没有与此索引关联的停止列表
  • 专栏中肯定有“詹姆斯·W·布朗”这样的文字
  • 全文索引是最新的

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

全文搜索
是一项功能,用于执行
特定语言搜索

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

在您的查询中,您正在查找字母“
W”
,它在英语中不是一个单词,它是一个字母表,但仅此而已,它没有任何意义。它更像是字符串中的一个pattern。为此,您应该使用
like
关键字以及通配符
%
,这将返回字符串值
James W Brown


另一方面,如果您想使用FTS在数据库中查找所有可能的
James
,那么FTS就很方便了。通过对James进行同义词表搜索,将返回Jim、Jimmy、Jimmie等,但您必须再次编辑特定语言的FDData下的XML文件才能实现这一点

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

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

引用是问题所在吗?(我从未使用过contains函数,我只会使用LIKE)
contains
不是用于那种搜索,你可以阅读它。Contains用于搜索单词或单词的前缀,搜索多个单词或确保您不是指“and”或“NEAR”等关键字时需要引号之类的内容。这个答案表明W可能是一个停止词()看起来有人正在进行投票否决,乔纳森发布的答案被否决了。有些小丑被释放了。别担心他们。尽管他们在生活中没有什么力量,但他们倾向于充分利用它。全文搜索不仅仅局限于特定语言中的单词。我可以做
CONTAINS(StreetAddress,““123”)
并返回“123 Main St.”@JonathanAllen FTS,因为这样的搜索太过分了,
LIKE
应该用在你提到的例子中。@M.Ali,LIKE不是正确的答案。它进行全表扫描,不理解整词的概念。