[英]SQL Server 2008 full-text index issue
我有一个如下指定的TableA
,其中为列Name
指定了全文索引
表A
Id (PK)
Name (TXI)
该表有以下记录:
ingrid
neville
ned
audry
inga
然后我对表运行以下查询:
SELECT * FROM TableA WHERE CONTAINS(Name,'"n*"');
查询结果如下:
Id Name
1 ingrid
2 neville
3 ned
为什么即使它不以'n'开头,它也会返回第一条记录?
您的查询对我有用....:
TRUNCATE TABLE FTS_Demo_2
INSERT FTS_Demo_2 (Document) VALUES ('ingrid')
INSERT FTS_Demo_2 (Document) VALUES ('neville')
INSERT FTS_Demo_2 (Document) VALUES ('ned')
INSERT FTS_Demo_2 (Document) VALUES ('audry')
INSERT FTS_Demo_2 (Document) VALUES ('inga')
/* WAIT FOR AUTO POPULATION TO POPULATE */
SELECT * FROM FTS_Demo_2 WHERE CONTAINS (Document, '"n*"')
结果:
RecordID Document
----------- --------------------
2 neville
3 ned
(2 row(s) affected)
也许这是您的 FTS 索引或目录的问题? 您的列类型是什么? 我在此示例中创建了 NVARCHAR(MAX) 列,这是目录属性:
尝试:
SELECT * FROM TableA WHERE CONTAINS(Name,'n*');
您的全文索引可能已过期。 重建它可以解决您的问题吗?
按照 Jim B 的建议,尝试通过以下方式更新您的目录:
ALTER FULLTEXT CATALOG TableA REORGANIZE
然后
SELECT * FROM TableA WHERE CONTAINS(Name,'"n*"');
另一个提示: Full-Text 的目的是在文本中搜索 WORDS,所以我不知道您是否正在测试全文,但要获得您要查找的内容,正确的方法是运算符LIKE
为:
SELECT * FROM TableA WHERE Name LIKE 'n%';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.