2010-09-19 78 views
0

我們有很多對象,每個對象都帶有大約100-200字的描述。 (例如一本書的作者姓名和小概要)。帶拼寫更改/錯誤的全文搜索

用戶將輸入作爲單詞的系列輸入。如何使用近似文字和小拼寫更改來實現搜索?例如,「約書亞布洛赫」,「約書亞blosh」,約書亞塊「可能導致同樣的文本結果。

+0

我對拼寫檢查知之甚少,但我聽說bloom filter在這種情況下很有用。請檢查鏈接。 http://ipowerinfinity.wordpress.com/2008/03/02/bloom-filters-designing-a-spellchecker/ – Emil 2010-09-20 06:01:45

回答

1

如果您使用Lucene進行全文搜索,那麼可能會出現「Did you mean」擴展名。

1

如何實現具有近似的文字和小的拼寫變化搜索?例如‘約書亞布洛赫’,」約書亞blosh 「約書亞區塊」可能導致相同的文字結果。

你的數據庫是否支持Soundex? Soundex將匹配類似的聲音詞,這似乎符合你上面給出的例子。即使您的數據庫沒有本地soundex,您仍然可以編寫一個實現並將每個作者名稱的soundex保存在單獨的字段中。這可以用於稍後匹配。

但是Soundex不是全文搜索的替代品;它只會在特定情況下幫助作者的名字。如果你正在尋找某些特定的文字說法,那麼這本書的內容就會比較好用了全文搜索選項(如Postgresql's)。

1

如果您正在尋找實際的實現這個功能,這裏是由彼得·諾維格譜寫了光輝燦爛的程序:http://norvig.com/spell-correct.html

它也有許多其他語言包括Java,C等鏈接,實現

0

Apache Lucene可能適合您的賬單。它是完全用Java編寫的高性能完整測試搜索引擎庫。

1

您可以使用拼寫檢查器JOrtho。從數據庫的上下文中,您可以生成自定義字典並進行設置。然後,所有不在字典中但不在數據庫中的單詞都會標記爲錯誤的拼寫。

1

而不是Lucene,請檢查Solr。 Lucene是一個庫,您可以使用它將搜索功能嵌入到應用程序中。 Solr是Lucene的實際實現,您可以通過API直接插入到您的應用程序中。對於大多數系統,Solr將節省處理Lucene的複雜性。