我正在構建一個自動完成功能,它必須快速查詢超過1000萬個單詞/短語,並遇到一些問題。我的第一個想法是通過某種trie /三元樹結構,但這些都是嚴格的前綴匹配,這是不夠我的應用程序(我想完整的中綴匹配)。然後,我轉向了一些更大的解決方案,SqlServer全文索引,Lucene,Solr,Sphinx,但Lucene和SqlServer FullText索引實際上並不是全文,而是帶有漂亮功能(soundex,proximity等)的前綴。我試圖想到Levenshtein編輯距離可以提供幫助的一種方法,但是找不到一種方法既能夠達到相當準確的效果,又能支持具有較高編輯距離的單詞(例如,Google和ogl,編輯距離爲3,但3是高門檻的一般情況)。快速搜索中文
我的問題是,Google/bing等強大的機構如何做到這一點?他們只是在一段時間後蠻橫嗎?我會想象不到,但我找不到任何支持。
任何幫助,將不勝感激!
我猜N-gram方法可能有幫助。然後是http://sna-projects.com/cleo/,它可以滿足您的需求。 – aitchnyu 2012-03-21 06:59:23
「Lucene不是全文」?你能詳細說明一下嗎?看起來你有一個不同於大多數人使用的定義。另外,你對Solr/Lucene/Sphinx/etc的每一個嘗試過什麼?你知道Solr有一個特定的組件來處理自動完成嗎? – 2012-03-21 12:18:48
我全文意思是如果我搜索「* talli *」,「metallica」是匹配的。在sqlserver和lucene下,情況並非如此。 – hermitt 2012-03-21 18:11:22