【问题标题】:full-text catalog index CONTAINS() doesn't work with numbers全文目录索引 CONTAINS() 不适用于数字
【发布时间】:2020-09-10 22:09:28
【问题描述】:

我刚刚将数据库从一台服务器移动到另一台服务器,此查询在旧服务器上运行良好,但现在在我仅在搜索中使用数字时它不适用于新服务器:

SELECT *
FROM Products
WHERE  CONTAINS(ProductTitle,'"sample*" AND "7*"') 

当您删除 7* 时,它在新服务器上工作正常,但它不会返回任何包含它的内容。刚刚在旧服务器上测试了相同的查询,它运行得很好。

【问题讨论】:

  • 您应该指定您正在尝试使用全文目录索引,并验证全文索引是否正确构建在新服务器上。就个人而言,我避免在 SQL Server 中使用全文目录,尤其是像产品标题这样的内容。
  • 告诉我们旧服务器和新服务器:它们是同一版本的 SQL Server 吗?你复制了什么配置?
  • 我正在使用全文目录索引。我无法再访问旧服务器,所以我不确定它有什么。我不能使用 LIKE,因为如果用户键入“7 sample”并且 ProductTitle 是“sample 7 product”,它不会出现,这就是我使用 CONTAINS 的原因。
  • 你会用@pmbAustin 做什么这样的事情?我想要它,如果用户搜索 Sample 7,它会显示任何包含单词 7 和 Sample 的内容,无论顺序如何
  • 您仍然可以使用 LIKE。只需对您的搜索词进行拆分字符串(按空格拆分),然后生成一个 WHERE 子句,其中每个词都有一个子句。这涉及到动态 SQL,但它是一个解决方案。

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


【解决方案1】:

万一其他人遇到这种情况...我移动到的新服务器有一个“停止列表”,用于全文目录,用于任何单个字母。我删除了它,一切正常。

【讨论】:

  • 嘿,我遇到了同样的问题,你做了什么来删除“停止列表”提前谢谢
  • 没关系,我在全文的属性下找到了它,我打开了停止列表并将其关闭,重新索引,现在一切正常,谢谢!
【解决方案2】:

尝试使用“喜欢”而不是“包含”

【讨论】:

  • 我正在使用全文目录索引。我无法再访问旧服务器,所以我不确定它有什么。我不能使用 LIKE,因为如果用户键入“7 sample”并且 ProductTitle 是“sample 7 product”,它不会出现,这就是我使用 CONTAINS 的原因。
猜你喜欢
  • 2020-02-03
  • 2016-12-30
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 2019-04-11
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多