3

我正在尝试在我的网站中实现搜索功能,该网站在金字塔上运行,我想知道解决这个问题的最有效方法是什么。我目前正在使用 SqlAlchemy 研究WhooshMySQL 全文搜索。我需要一个快速简单的实现,并且想知道哪一个是最好的选择。

4

2 回答 2

7

我尝试将全文与本机数据库一起使用一段时间,但要保持跨 sqlite、mysql 和 pgsql 工作的工作量太大。我把所有的搜索代码都移植到了 whoosh 上,从那以后我真的很开心。它适用于小型工作负载,是纯 python,无需设置服务器。

您只需像在磁盘上写入和更新文件一样实现它。从我读到的内容来看,它在数百万份文档中表现良好。我将它与索引大小约为 100MB 的 18k 文档一起使用。使用它实现各种标记化和其他配置有很大的灵活性。我真的建议人们从那里开始,如果他们长大了,然后考虑使用 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

于 2012-07-25T08:24:46.597 回答
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/

于 2012-07-25T02:30:02.853 回答