【发布时间】:2013-11-23 13:00:40
【问题描述】:
我有一个带有列消息 NVARCHAR(MAX) 的 MyTable。
ID 为 1 的记录包含消息“0123456789333444 测试”
当我运行以下查询时
DECLARE @Keyword NVARCHAR(100)
SET @Keyword = '0123456789000001*'
SELECT *
FROM MyTable
WHERE CONTAINS(Message, @Keyword)
记录 ID 1 出现在结果中,我认为它不应该出现,因为 0123456789333444 不包含 0123456789000001。
有人能解释为什么这些记录还是会显示吗?
编辑
select * from sys.dm_fts_parser('"0123456789333444 Test"',1033,0,0)
返回以下内容:
group_id phrase_id occurrence special_term display_term expansion_type source_term
1 0 1 Exact Match 0123456789333444 0 0123456789333444 Test
1 0 1 Exact Match nn0123456789333444 0 0123456789333444 Test
1 0 2 Exact Match test 0 0123456789333444 Test
【问题讨论】:
-
无论有无停止列表,我都无法在 SQL Server 2012 中重现这一点。你正在运行哪个版本,你的停止列表是什么(我知道你说这不是一个因素,但我仍然很好奇),以及包含“0123456789333444”的完整消息值是什么?
-
嗨@Keith,感谢您查看它。我正在使用 SQL Server 2008 R2。完整消息如上所示:'0123456789333444 测试'。你的意思是“你的停止名单是什么”?谢谢朱塞佩
-
@gsharp 在SSMS中右击表格,选择全文索引>属性,让我们知道“全文索引停止列表”的值是多少。
-
我开始认为这是 SS 2008 的问题,因为我无法在 SS 2012 中重现此问题,并且链接到的线程 @Love2Learn 也涉及 SS 2008。不幸的是我不能验证这一点,因为我没有安装 SS 2008。
标签: sql sql-server tsql full-text-search contains