2011-06-02 179 views
1

我有如下規定一個TableA作爲其全文索引列指定NameSQL Server 2008的全文索引問題

表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」開頭?

+0

如果您發佈的代碼,XML或數據樣本,** **請在高亮文本編輯器的線和點擊編輯器工具欄上的「代碼示例」按鈕(「{}」),以精確地格式化和語法突出顯示它! – 2011-06-02 16:37:03

回答

0

嘗試:

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

這樣做會讓我沒有記錄 – Luis 2011-06-02 16:54:49

0

這可能是您的全文索引是過時的。重建它會解決你的問題嗎?

0

依照與吉姆乙建議嘗試更新您的目錄:

ALTER FULLTEXT CATALOG TableA REORGANIZE 

然後

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

另一個祕訣:全文的目的是文本內搜索關鍵詞所以我不知道如果你正在測試全文,但得到你正在尋找什麼,他們正確的方法是運營商LIKE爲:

SELECT * FROM TableA WHERE Name LIKE 'n%'; 
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)列,這是目錄屬性:

enter image description here