在Django中使用MongoDB进行实时搜索?
我正在做一个以搜索为主的项目。简单来说,用户会往网站上添加内容,而这些内容应该能立刻出现在搜索结果中。这个项目还在开发中。
到目前为止,我一直在用Haystack和Xapian。不过我有点担心,当网站上内容变多后,网站的性能会受到影响。如果我想实现实时搜索,就必须频繁地进行索引更新。
最近我在了解MongoDB。我还没有找到一个让我满意的答案,但我觉得MongoDB可能会对我预期会遇到的实时搜索索引问题有所帮助。这种想法对吗?换句话说,MongoDB提供的搜索功能是否更适合实时搜索?
网站上将会有大量的非结构化文本(包括HTML)和相关数据(比如价格、标签、时间信息)。
提前谢谢你,
Laundro
2 个回答
1
我对MongoDB了解不多,但我用Sphinx Search取得了很好的效果。这是一个简单、强大且非常快速的工具,用于全文索引和搜索。它还自带Python的封装,使用起来很方便。
如果Haystack能提供对它的支持,那就更简单了,但遗憾的是,Sphinx的支持目前还在愿望清单上。不过,设置Sphinx非常快(我在几小时内就完成了,针对一个已经在用的基于Django的客户关系管理系统),所以在切换到更通用的解决方案之前,你可以先试试这个。