Heroku上的全文搜索,数据库或索引选择?

3 投票
3 回答
1368 浏览
提问于 2025-04-17 13:06

我想在一个小应用程序上实现(免费使用)全文搜索,这个应用托管在Heroku上(用户数量不多,数据集也有限)。不过,我在寻找最佳实现方式时遇到了一些困难。一个选择是利用xeround的10MB限制,趁它还能用的时候(我们可能很快就会超过这个限制)。第二个选择是自己在MongoDB或CouchDB上实现全文搜索。

这个应用中的文档是一些归档的电子邮件,我希望能从邮件列表中进行搜索,大约有1万封这样的邮件,都是纯文本,每封大约700字节。

我希望能有模糊搜索的功能,所以我在考虑使用whoosh。

在我的需求中(我应该早些提到),最重要的是它要是免费的

我没有找到在Python和Flask应用中使用whoosh与MongoDB结合的相关模式。

有没有人能提供一些关于如何在小型Heroku Python应用中处理全文搜索的更多信息?

3 个回答

0

你有没有考虑过使用Apache SolR?我觉得这是一个非常好的免费文本搜索引擎,它是免费的,而且是开源的。

如果你想在Python中使用SolR,我推荐你使用MySolr这个库。它比pysolr快很多,使用起来也更简单(你可以在这里查看一些统计数据)。

0

pysolr 可以帮你解决这个问题。

2

我还没试过,不过http://tenderlove.github.com/texticle/看起来是说,如果你的数据量不大,可以使用原生的pgsql全文搜索。使用whoosh的话,可能会遇到磁盘空间不足的问题,而且在heroku上也会受到一些限制。

另外,你可以按照开发文档的建议,使用一些附加功能:http://devcenter.heroku.com/articles/full-text-search

关于搜索的方式,你基本上需要进行全文搜索,然后获取记录的数据或ID,再根据这些结果去查询你的数据存储(比如mongo),获取完整的数据集。这是一个手动的过程,但也不算太复杂。如果搜索不需要完整的记录,通常可以只保存重要的数据和全文搜索的信息,这样可以减少全文索引的大小。

撰写回答