2012-07-25 59 views

回答

6

我試着用全文與本地數據庫一段時間,它只是太多的工作,以保持精簡gs跨sqlite,mysql和pgsql工作。我將所有的搜索代碼移植到了whoosh之後,並且從此以後一直非常高興。它適用於小型工作負載,純粹是python,並且無需安裝服務器。

你只是實現它就像寫入和更新磁盤上的文件。從我讀過的內容來看,它在單個數百萬個文檔中表現良好。我使用了一些索引大小約爲100MB的18k文檔。有很多靈活性來實現各種標記和其他配置。我真的建議人們從那裏開始,如果他們增長了whoosh,然後看看使用elasticsearch,lucene/solr等啓動額外的進程。

你可以看到我是如何得到它的實施在這裏:

https://github.com/mitechie/Bookie/blob/develop/bookie/models/fulltext.py

,我使用SQLAlchemy的事件掛鉤更新:

https://github.com/mitechie/Bookie/blob/develop/bookie/models/__init__.py#L663

,你可以判斷基本實現通過以下搜索:

https://bmark.us/search

+0

儘管我最終選擇了ElasticSearch,但您的答案在提供深入的知識方面最有用。謝謝! – Wiz 2012-07-25 23:23:46

1

我是ElasticSearch的忠實粉絲。這是建立,維護和使用最簡單的方法。

我一般使用請求。

指數:

requests.put("http://localhost:9200/myindex/category/",data=json.dumps(document)) 

搜索:

requests.get("http://localhost:9200/myindex/category/_search?q="+somequery) 

你可以得到深入的方式更使用DSL搜索:

http://www.elasticsearch.org/guide/reference/query-dsl/