【发布时间】:2010-10-09 22:28:55
【问题描述】:
我在 SQL Server 数据库中有一个 Products 表,我必须对使用全文索引的旧存储过程进行故障排除。出于我们的目的,假设 Products 表有两个字段 ID,Keywords。关键字字段填充以下内容:
ROLAND SA-300 这款 Roland SA-300 是 完好无损!
当我运行以下语句时,我能够检索记录:
SELECT * FROM Products WHERE Keywords LIKE '%SA-300%'
但是,当我运行以下任何语句时,我得到的结果为零:
SELECT * FROM Products WHERE CONTAINS(Keywords, ' SA-300 ')
SELECT * FROM Products WHERE CONTAINS(Keywords, 'SA-300')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"SA-300"')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"*SA-300*"')
但我知道 CONTAINS() 函数正在工作,因为当我运行其中任何一个时都会得到结果:
SELECT * FROM Products WHERE CONTAINS(Keywords, ' Roland ')
SELECT * FROM Products WHERE CONTAINS(Keywords, 'Roland')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"Roland"')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"*Roland*"')
SELECT * FROM Products WHERE CONTAINS(Keywords, 'Roland')
我需要弄清楚为什么 CONTAINS() 函数不适用于“SA-300”术语。我是全文索引的新手,因此不胜感激。
【问题讨论】:
-
没有线索,但你检查过索引是最新的吗?
标签: sql-server tsql full-text-search