在Django上使用MongoDB进行实时搜索?

时间:2010-05-26 08:04:46

标签: python full-text-search mongodb

我正在开发一个非常以搜索为导向的项目。基本上,用户将向网站添加内容,此内容应立即在搜索结果中提供。该项目仍处于开发阶段。

到目前为止,我一直在和Xapian一起使用Haystack。我担心的一件事是,一旦有大量内容可用,网站的性能。如果我想模仿实时搜索,索引必须经常发生。

我最近正在阅读MongoDB。我没有找到一个令人满意的答案我的问题,但我觉得MongoDB可能有助于我期望遇到的实时搜索索引问题。它是否正确?换句话说,MongoDB中可用的搜索功能是否更适合实时搜索功能?

网站上可用的内容是大型非结构化文本(包括HTML)和相关数据(价格,标签,日期时间信息)。

提前致谢,

Laundro

2 个答案:

答案 0 :(得分:1)

MongoDB并不是一个“专用的全文搜索引擎”。基于他们的full text search文档,您只能创建一个复制字符串数据或其他列的标记数组,其中包含许多元素(数百或数千)可能会使插入非常昂贵。

同意Tomasz,Sphinx Search可以用于您所需要的。 Real time indexes如果您希望它真正实时或Delta indexes如果可以接受几秒钟的延迟。

答案 1 :(得分:0)

我对MongoDB知之甚少,但我使用得非常成功Sphinx Search - 简单,强大且非常快速的全文索引和搜索工具。它还提供了开箱即用的Python包装器。

如果Haystack为它提供绑定会更容易拿起它,不幸的是Sphinx绑定仍然在愿望清单上。 尽管如此,设置Spinx的速度非常快(我在几小时内完成了现有的基于Django的生产型CRM),在转换到更通用的解决方案之前,您可以尝试一下。