1

我有一个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'开头,它也会返回第一条记录?

4

4 回答 4

0

尝试:

SELECT * FROM TableA WHERE CONTAINS(Name,'n*');
于 2011-06-02T16:36:02.147 回答
0

您的全文索引可能已过期。重建它可以解决您的问题吗?

于 2011-06-02T19:24:38.130 回答
0

您的查询对我有用....:

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) 列,这是目录属性:

在此处输入图像描述

于 2012-05-08T21:02:32.487 回答
0

按照 Jim B 的建议,尝试通过以下方式更新您的目录:

ALTER FULLTEXT CATALOG TableA REORGANIZE

然后

SELECT * FROM TableA WHERE CONTAINS(Name,'"n*"');

另一个提示:全文的目的是在文本中搜索 WORDS,所以我不知道您是否正在测试全文,但要获得您要查找的内容,正确的方法是运算符LIKE

SELECT * FROM TableA WHERE Name LIKE 'n%';
于 2011-06-02T21:01:38.647 回答