Django的搜索引擎解决方案实际上有效吗?

nik*_*ola 30 django search full-text-search search-engine xapian

到目前为止的故事:

决定使用Xapian作为搜索后端,因为它具有我正在寻找的所有搜索引擎功能,了解Unicode,干扰,具有很少的依赖性,并且不需要在其上安装膨胀的应用服务器.

尝试过Django和Haystack(再加上xapian-haystack,将Haystack与Xapian联系在一起的后端粘合代码),因为它在很多博客上被宣传为"正常工作".不工作.django-haystack和xapian-haystack项目都没有提供实际协同工作的版本组合.两个项目的MASTER从Xapian产生错误,所以它根本不稳定.Haystack 1.0.1和xapian-haystack 1.0.x/1.1.0不兼容API.另外,在Haystack 1.0.1和xapian-haystack MASTER的最低工作安装中,由于django-haystack或xapian-haystack中的错误,任何复杂查询都会产生零结果(我对此进行了双重验证),可能是因为单元测试实际上测试非常简单的情况,根本没有边缘情况.

试过Djapian.源代码充满了拼写错误(请注意,变量名称,而不是注释),文档也充满了模糊和过时的信息,永远不会导致工作安装.毫不奇怪,用户很少要求功能,但如何让它首先工作.

下一篇文章:探索Solr(安装Java环境加上Tomcat让我感到头疼,机器受RAM和CPU约束)或Lucene(稍微不那么头疼,但仍然如此).

在我继续花费更多时间使用可能会或可能不如宣传的解决方案之前,我想知道:有没有人在Django中获得实际的,真实的搜索解决方案?我是认真的.我发现阅读"大部分问题大部分都解决了",然后意识到你永远不会从源代码中获得有效的安装,这真是令人沮丧,因为实际上,处理那些"主要解决问题"的所有博客都没有超过基本安装和复制粘贴官方教程.

所以这是要求:

  • 必须能够在一个查询中搜索10-100个术语
  • 必须处理+(术语必须存在)和 - (术语不得存在),和/或
  • 必须处理任意分组(即AND/OR周围的括号)
  • 必须允许在全文搜索之前或之后进行Django-ORM过滤(即使用Django知道的全套过滤器对结果进行预处理/后处理)
  • 或者,必须有一个工具来批量获取结果集并将其转换为QuerySet
  • 应该在机器上很轻,所以最好没有大量的JVM和基于Java的app-server安装

那有什么可以做到的吗?我对轶事证据不感兴趣,或者对一些声称应该有效的博客文章的引用感兴趣.我想听听那些真实拥有全功能设置的人在现实世界中,在真实条件下,真实查询.

编辑:

让我再说一遍,我对轶事证据并不是那么感兴趣,因为有人在某个地方有一个运行不正常的安装工具.我已经去过那里,我阅读了所有的博客文章,邮件列表,我联系了作者,但是当涉及实际场景的实际实现时,没有任何像宣传的那样工作.

此外,考虑到任何项目的总体拥有成本,下面的用户也提到了这一点,我绝对没有兴趣听到有人在一个供应商在未知数量的专家中跳伞的某个地方能够将其拉下来 - 使用特定的域知识对整个安装进行修补,这些知识无法记录.

所以,如果您声称您的工作安装实际上满足了全面搜索的最低要求(请参阅上述要求),请提供以下信息,以便我们都能从Django的搜索解决方案中获益,从而真正解决问题:

  • 确切的Linux发行版,发行版,
  • Haystack(或同等版本)的确切发布版本以及搜索后端的发布版本,
  • 搜索引擎的确切发布版本
  • 公开(!)可用文档如何完全按照安装设置的方式设置所有组件,以满足上述最低要求.

谢谢.

tux*_*21b 11

我也开发了一些支持xapian的Django应用程序.其中最大的有2.4M存储文件(包括论坛帖子,维基条目,行星项和博客条目)8G的索引数据库的Xapian - 仍在增长.

总的来说,我对xapian非常满意.它表现非常好,易于使用.我唯一不喜欢的是xapian因为死锁而无法使用mod_wsgi(全局模式除外).所以你被迫使用fastcgi(或连接到xapian-tcpsrv或编写自己的服务).

我建议你直接使用xapian-bindings.Xapian的时下提供了不少有用的帮手(TermGenerator,QueryParser的等),这使得双方的索引和查询的简单.事实上,我没有什么可以成像来证明额外的库是合理的.在我看来,它们都更复杂,不允许你有效地索引.

您唯一需要的是对xapian工作方式的理解.(什么是术语?什么是值?什么是词干,我应该在哪里使用它?等等).您可以在xapian网站上找到所有这些主题,一旦您理解了这些概念,处理xapian将变得简单.

此外,xapian API非常稳定.我已经开始在1.0版本之前使用它很长时间,并且从未遇到过API更改或版本冲突的任何问题.唯一改变的是我为Django项目编写的所有帮助程序(查询解析器,标记器等)现在都没用了,因为类似的类已经进入了xapian核心.

总而言之,只需尝试直接使用xapian-bindings即可.


not*_*ber 9

我可以在现实生活环境中使用Xapian后端(为了充分披露,我是xapian-haystack后端的作者)为Django-Haystack担保.我们目前在几个站点上使用Haystack/Xapian,其中最大的站点拥有超过20,000个注册用户,Xapian数据库包含20,000多个文档,包含超过143,000个独特术语,总大小约为141mb.

至于无法得到Haystack和Xapian后端运行的任何组合,我会承认我不像我应该使用我的标记那样勤奋,因此版本存在一些混淆.但是,您应该能够使用两个代码库的当前主服务器而不会出现任何问题.如果不是这种情况,我会非常乐意帮助解决问题.你需要对这个问题稍微具体一点.简单地说"它不起作用"是不够的信息.

丹尼尔和我都尽力回应Github及时打开的任何问题.此外,我们通常在白天的#haystack IRC频道和django-haystack Google Group上都可以使用.

使用的版本:

  • 干草堆1.0BETA与Xapian-Haystack 1.1.0BETA
  • 干草堆1.0.1FINAL与Xapian-Haystack 1.1.3BETA

我们使用Haystack部署的大多数站点都使用Xapian 1.0.5运行Ubuntu 8.04 LTS


Pet*_*ell 7

简答:不.

我们保释并使用Google自定义搜索.虽然该网站有超过10,000个可能的页面浏览量,但我们将站点地图的页面数量保持在4,000左右,并且每年花费250美元,这大约是我2小时的时间.顾客很高兴,他对结果感到满意.

我很想看到有人想出一个好的FOSS解决方案,但在商业环境中,TCO必须具有经济意义.


小智 7

您要求的详细信息.

  • 确切的Linux发行版,发行版--Ubuntu 9.04和9.10
  • Haystack(或同等版本)的确切发布版本 - Haystack 1.0以及master
  • 搜索后端的发布版本 - Haystack附带的Solr&Whoosh后端
  • 搜索引擎的确切发布版本 - Solr 1.3,Solr 1.4和Whoosh 0.3.15
  • 公开(!)可用文档如何完全按照安装设置的方式设置所有组件,以满足上述最低要求.

除此之外,它是教程中的标准配置位,以及根据需要的任何其他覆盖(我无法链接到,感谢Stack Overflow).

作为Haystack的维护者,我正积极运行上述所有设置.最小的Haystack安装(Haystack 1.0 + Whoosh)是大约600个文件.稍微大一点(Haystack master + Solr 1.4)是大约4000个文档.我所知道的最大部署(Haystack master + Solr 1.4)是大约300万个文档.

我通常会尽量避免Stack Overflow,所以如果你没有看到我的任何进展,不要感到惊讶.邮件列表是最好的支持地点,但鉴于您的回复,我相信您宁可在此丢弃我.