Heroku上的全文搜索,数据库或索引选择?
我想在一个小应用程序上实现(免费使用)全文搜索,这个应用托管在Heroku上(用户数量不多,数据集也有限)。不过,我在寻找最佳实现方式时遇到了一些困难。一个选择是利用xeround的10MB限制,趁它还能用的时候(我们可能很快就会超过这个限制)。第二个选择是自己在MongoDB或CouchDB上实现全文搜索。
这个应用中的文档是一些归档的电子邮件,我希望能从邮件列表中进行搜索,大约有1万封这样的邮件,都是纯文本,每封大约700字节。
我希望能有模糊搜索的功能,所以我在考虑使用whoosh。
在我的需求中(我应该早些提到),最重要的是它要是免费的!
我没有找到在Python和Flask应用中使用whoosh与MongoDB结合的相关模式。
有没有人能提供一些关于如何在小型Heroku Python应用中处理全文搜索的更多信息?
3 个回答
0
pysolr 可以帮你解决这个问题。
2
我还没试过,不过http://tenderlove.github.com/texticle/看起来是说,如果你的数据量不大,可以使用原生的pgsql全文搜索。使用whoosh的话,可能会遇到磁盘空间不足的问题,而且在heroku上也会受到一些限制。
另外,你可以按照开发文档的建议,使用一些附加功能:http://devcenter.heroku.com/articles/full-text-search
关于搜索的方式,你基本上需要进行全文搜索,然后获取记录的数据或ID,再根据这些结果去查询你的数据存储(比如mongo),获取完整的数据集。这是一个手动的过程,但也不算太复杂。如果搜索不需要完整的记录,通常可以只保存重要的数据和全文搜索的信息,这样可以减少全文索引的大小。