2012-07-25 56 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/