繁体   English   中英

SQL Server 2008全文索引问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM