全文搜索:Whoosh 与 SOLR 对比

32 投票
2 回答
15904 浏览
提问于 2025-04-16 01:09

我正在做一个Django项目,需要实现全文搜索功能。我看到有关于SOLR的讨论,评论也不错。但因为SOLR是用Java写的,所以需要在系统上安装Java环境,另外还要有Python。我在找Python中和SOLR类似的工具,看到Whoosh,但我不确定Whoosh的效率和强度是否能和SOLR相比。请问我应该只选择SOLR,还是有比Whoosh和SOLR更好的Python选项呢?

请给点建议。

提前谢谢你!

2 个回答

3

我之前用过Lucene,还有一些它的扩展,比如SOLR和Nutch,发现Lucene基本上能满足我的需求。我只试过Whoosh一次,但最后还是选择了Lucene,原因有两个: 1) 我用的是Java语言。 2) 我在使用Whoosh时遇到了UTF-8编码的问题(不确定现在是否能直接用)。而在Lucene中,我处理中文字符时没有遇到任何麻烦。

如果你用的是Python,并且Whoosh能满足你的需求,那我建议你用Whoosh,因为它和Java的替代品相比,更容易集成,避免外部依赖,如果你需要添加额外功能,定制起来也更快。

更新:如果你对使用Lucene感兴趣,它有一个Python的封装,可以查看这个链接:http://lucene.apache.org/pylucene/

16

Whoosh其实在用Python实现的时候速度还挺快的。不过,跟其他方案比起来,它的速度还是慢了不少。如果你需要处理的数据量很大,或者对搜索的速度和同时进行的搜索数量有严格要求,那可能就不太适合用Whoosh了。

SOLR有点复杂,但它是最全面的搜索解决方案。把它和solrpy结合使用,效果会非常好。不过,你需要有Java的服务器来运行它。

你也可以看看Xapian的Python绑定。Xapian的速度非常快,但它的功能没有SOLR那么全面。它是GPL授权的,所以这可能对你来说有些限制。

撰写回答