2012-06-18 30 views
3

我正在尋找一種搜索引擎,可以指向我的數據庫中支持拼寫校正和「接近」結果等高級功能的列。單個數據庫列的搜索引擎

現在我只是用

SELECT <column> from <table> where <colname> LIKE %<searchterm>%

,我特別缺少了一定的效果,當用戶拼錯項目。

我已經寫了一些代碼,通過運行拼寫檢查程序來修復拼寫錯誤,但認爲可能有更好的開箱即用選項。谷歌提出了很多索引和搜索整個網站的選項,我真的只需要索引和搜索這一個表格列。

+0

你alredy知道[嗖(http://pypi.python.org/pypi/Whoosh/)? 我剛剛通過搜索[Lucene](http://en.wikipedia.org/wiki/Lucene)找到python – DonCallisto

回答

1

我會建議尋找像斯芬克斯搜索這樣的開源技術。

3

Apache Solr是一個很棒的搜索引擎,它提供了(1)N-Gram索引(不僅可以搜索完整的字符串,還可以搜索部分子字符串,這對獲得類似結果非常有幫助)(2)提供開箱即用的拼寫基於距離度量/編輯距離的校正器(當用戶鍵入chicaog時,它將幫助您獲得「您是否意味着芝加哥」)(3)它提供了一個開箱即用的模糊搜索選項(Fuzzy Searches可以幫助您獲取(例如,如果用戶鍵入GA-123,他將獲得VMDEO-123作爲結果)(4)Solr還向您提供「More Like This」組件,它可以幫助您解決上述問題。

Solr(基於Lucene Search Library)是開源的,它正在慢慢興起,成爲Search(垂直)行業的事實上的產物,非常適合數據庫搜索(正如您談到索引數據庫列時那樣Solr的Cakewalk)。許多財富500強公司和互聯網巨頭都使用Lucene和Solr。

獅身人面像搜索引擎也很棒(我也喜歡它,因爲它對所有東西都有很低的尺寸&是基於C++的),但簡單地說,Solr更受歡迎。

現在Python支持和API都可用於兩者。然而,Sphinx是一個exe文件,Solr是一個HTTP文件。所以對於Solr,你只需要調用你的python程序中的Solr URL,它會返回結果,你可以發送到你的前端進行渲染,就這麼簡單)

到目前爲止好。回到你的問題:

首先,你應該問自己,你是否真的需要一個搜索引擎?搜索引擎對於上面提到的所有用例都很有用,但它的確適用於搜索大量全文數據或數百萬行表格數據。算法像你的意思,相似的記錄,拼寫校正等可以寫在最上面。在將Solr歸零之前,請同時在Google搜索(1)Peter Norvig拼寫糾正器&(2)N-Gram索引。可能性是,只需編寫幾行代碼,就可以真正獲得您正在尋找的東西。

我把它留給你來決定:)

0

去之前下來全文索引Solr的/獅身人面像的路線 - 這增加了複雜性和自己的開銷 - 你可以嘗試內置的全文引擎PostgreSQL如果你正在使用該數據庫。與LIKE查詢相比,易於設置和執行。

退房https://github.com/hcarvalhoalves/django-tsearch2