2013-03-27 73 views
2

我偶然發現了SQL Server 2008 R2中奇怪的fulltextindex行爲(我的斷字符語言是德語)。奇怪的SQL Server全文匹配

我有這樣的文本索引:

[...] Java Editorerstellung in Eclipse eines Modellierungseditors(UML) mit den Eclipse Technologien [...]

我三重檢查:術語EDI在這個文本一小段唯一的發生,我只能找到它的一部分Editorerstellung und Modellierungseditors

但SQL Server仍然具有EDI作爲一個單詞在它的fulltextindex(發生:1),因此返回它ContainsTable(...)搜索。爲什麼它被識別爲一個單詞?

有沒有人解釋這種行爲?謝謝。

回答

0

German Compound words需要在自然語言斷字符中進行特殊解析。例如,「Editorerstellung」被解析並存儲爲三個單獨的術語,「編輯」,「erstellung」和「editorerstellung」。已對analyzing German compund words進行了廣泛的研究,雖然技術正在改進,但過程並不完美。

您看到的行爲很可能是由於啓發式語言在斷言器中使用。我無法使用上面的代碼片段和Sql Server 2012分詞器重新產生您的問題,所以無論是Microsoft在Sql Server 2008 R2和Sql Server 2012之間的德語分詞器中的改進都解決了問題還是您沒有包含的某些文本是全文索引中的「edi」的來源。

您可以使用sys.dm_fts_index_keywords_by_document()查看索引中的條款。使用二進制搜索模式,您應該能夠將其縮小到生成「edi」術語的特定文本。

+0

感謝您的回覆! 不幸的是,我仍然可以在SQL Server 2012中重現這個問題。我進行了三重檢查,唯一發生的「edi」出現在兩個單詞「Editorerstellung」和「Modellierungseditor」中。儘管如此,我認爲你說的是​​破壞者是罪魁禍首。再次感謝。 –