【发布时间】: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