【问题标题】:SQL Contains() not returning results for 'The'SQL Contains() 未返回“The”的结果
【发布时间】:2020-09-15 14:15:02
【问题描述】:

我有如下 SQL 脚本来查询我的 ContactInfoes

SELECT * 
FROM ContactInfoes
WHERE CONTAINS(Name, 'The') 

我只得到空的结果集。我的表中有一个名称为“公司”的条目。

为什么我在这里没有得到任何数据以及如何解决这个问题。任何帮助表示赞赏。

我正在使用 SQL Server 2019

【问题讨论】:

  • 不,不会。默认情况下,“The”是stopword(以前称为“干扰词”),因此您将无法搜索包含“The”一词的值。如果确实需要该功能,则需要创建自己的停用词列表,然后使用该列表创建全文索引。

标签: sql sql-server tsql contains stop-words


【解决方案1】:

您在未指定 STOPLIST 的情况下创建了 FULLTEXT 索引。因此,使用了默认的 STOPLIST。默认情况下,单词“the”是停用词,已从您的文本中删除。如果您想按单词“the”搜索,您应该创建一个空的 STOPLIST,然后在 FULLTEXT INDEX 中指定此 STOPLIST。 您可以通过查询检查的默认停用词:

SELECT *
FROM sys.fulltext_system_stopwords
WHERE language_id = 1033 -- English

然后你可以创建空的STOPLIST:

CREATE FULLTEXT STOPLIST MyEmptyStopList;  
GO 

然后将其设置到您的全文索引中:

CREATE FULLTEXT INDEX ON table_name ... STOPLIST = MyEmptyStopList;

【讨论】:

    【解决方案2】:

    对我来说简单的解决方案是使用以下脚本关闭停止列表

    ALTER FULLTEXT INDEX ON [tablename]  Set StopList = OFF
    

    我已经配置了一个索引,它使用的是默认停止列表。我在这里关闭停止列表

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多