2013-07-19 54 views
1

我發現了一個奇怪的問題,使用全文索引查詢。FullText包含「AND DO」

以下查詢

#1 SELECT * FROM tbparticipant where contains([FullTextQuery],'ALINE AND NASCIMENTO') 

回報

ALINE DO NASCIMENTO 
ALINE QUEIROZ DO NASCIMENTO      
ALINE NASCIMENTO DE SOUZA 
ALINE CORREIA DO NASCIMENTO 

但此查詢

#2 SELECT * FROM tbparticipant where contains([FullTextQuery],'ALINE AND DO') 

回報什麼。

我認爲這將是與 「DO」 過短的問題,但此查詢

#3 SELECT * FROM tbparticipant where contains([FullTextQuery],'ALINE AND DE') 

回報

ALINE NASCIMENTO DE SOUZA 

那麼,什麼是錯的查詢#2?

+0

也許「DO」是在分析'包含()'聲明保留字。大概在查詢中引用「DO」會起作用。 – Vesper

+0

我也這麼認爲,但我做了一些Google搜索,沒有發現任何關於它的信息。引用不起作用。 – Auresco82

回答

1

「Do」在停用詞列表中 - 停用詞是被認爲是共同的或簡稱對於全文查詢具有任何重要含義的詞。你可以列出你的英語停用詞是這樣的:

select * from sys.fulltext_system_stopwords where language_id = 1033 

參考: http://msdn.microsoft.com/en-us/library/ms142551.aspx

+0

就是這樣!但是由於我使用SQL 2005,「do」實際上是一個「噪音詞」,它位於C:\ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ FTData \ noiseENG.txt文件中。我想我必須在搜索之前做一些替換魔術。非常感謝! – Auresco82