2010-01-12 46 views
2

我似乎在Microsoft SQL Server 2005中出現了一個奇怪的錯誤,其中FREETEXT()搜索儘管排序規則不區分大小寫(Latin1_General_CI_AS),但有些區分大小寫。Sql Server 2005全文檢索大小寫敏感問題

首先,LIKE查詢是完全不區分大小寫的,所以

WHERE column LIKE '%word%' 

WHERE column LIKE '%Word%' 

返回相同的結果。

此外,FREETEXT是逸岸不區分大小寫在一定程度上,例如

WHERE FREETEXT(column, 'Word') 

將返回不同的情況下的結果。

WHERE FREETEXT(column, 'word') 

,同時仍返回不區分大小寫的比賽爲word,給出了不同的結果集。 或者,像我發現經過一番調查,尋找word給出了所有的比賽爲word不同的情況,但尋找Word給出相同PLUS屈折結果。

或者使用的實際情況下,我找到了一個,尋找marketingleader返回所有結果包含這個詞的,獨立的情況下,而尋找Marketingleader將返回那些,而且結果只包含leader不顯示當搜索小寫時。

有任何人有任何想法,是什麼原因造成這一點,我怎麼能打開屈折/模糊搜索爲小寫的話呢?

任何幫助,將不勝感激。

回答

1

使用替代freetext這是contains和屈折結果是可選..

CONTAINS (Transact-SQL)

.. oups剛纔看到你提到包含在你的問題,但它的行爲方式相同在提供的例子中的自由文本?

+0

哦,我才意識到我忘了復位網站上的數據庫模型緩存,所以當我用'Contains'測試它,它實際上還是使用'freetext',所以你確實是正確的。現在 唯一的問題是,'contains'使用'FORMSOF(INFLECTIONAL,「術語」)'的時候只做屈折的搜索,而'FREETEXT'做它每默認(當然,除了怪異的情況下,我遇到了,當然) 。 默認情況下,似乎沒有簡單的方法讓屈折詞和搜索詞搜索工作? – Zenon 2010-01-12 11:50:47

+1

當您使用FORMSOF的屈折和詞庫它比自由文本返回不同的結果? – 2010-01-12 14:58:32

+0

'FORMSOF',無論是屈折或詞庫,不返回比一些術語其中'FREETEXT'做字面匹配其他任何結果... 退一步來說,它可能不是'在FORMSOF' /屈折相關所有,而是與斷詞有些區分的情況相關,即只在第一個字母是大寫字母時才執行。這可能與語言有關嗎?數據庫語言是德語。 嗯,我可以只是大寫的所有搜索字詞的第一個字母編程式,我猜 – Zenon 2010-01-13 09:50:05