到目前为止故事:Django实际工作的搜索引擎解决方案?
决定与Xapian的去作为搜索的后端,因为它拥有所有的搜索引擎功能,我一直在寻找,知道的Unicode,词干,几乎没有依赖关系,并要求在没有臃肿的应用服务器安装它的顶部。
尝试过Django和Haystack(加上xapian-haystack,将Haystack绑定到Xapian的后端粘贴代码),因为它在相当多的博客上被标榜为“working”。不工作。 django-haystack和xapian-haystack项目都没有提供实际合作的版本组合。来自两个项目的MASTER从Xapian中产生一个错误,所以它不稳定。 Haystack 1.0.1和xapian-haystack 1.0.x/1.1.0不兼容API。此外,在草堆1.0.1和Xapian的-MASTER草垛的最小安装工作,任何复杂的查询产生任何结果,由于在任Django的草垛或Xapian的-草垛(我的双验证了这一点)的错误,也许是因为单元测试实际上测试非常简单的案例,并且根本没有边缘案例。
试过Djapian。源代码是充斥着拼写错误(请注意,在变量名,而不是评论),文档也充满了含糊和过时的信息永远不会导致工作安装。毫不奇怪,用户很少要求功能,但如何才能使其工作。探索Solr(安装Java环境加上Tomcat让我头痛,机器受内存和CPU限制)或Lucene(稍微少点头疼,但仍然)。
在我开始花更多的时间与可能或可能无法正常工作,标榜一个解决方案,我想知道:有没有人得到一个实际的,现实世界的搜索解决方案在Django的工作?我是认真的。我觉得很沮丧阅读“主要是解决大问题”,然后意识到,你将永远不会从源代码得到一个工作安装,因为,事实上,对付那些“大多是亟待解决的问题”的所有博客从来没有过去基本安装和复制粘贴官方教程。
因此,这里是要求:
- 必须能够搜索10-100术语在一个查询
- 必须处理+(项必须存在)和 - (项必须不存在)和/或
- 必须(即左右括号AND/OR)处理任意分组
- 必须允许Django的ORM过滤前或全文搜索后(即前/结果与全套的后处理这Django知道有关过滤器)
- 替代地,必须有一个设施散装取结果集,并将其转换成一个查询集
- 应该是在机器上的光,所以优选不堆积如山JVM和基于Java的应用程序服务器安装
有没有什么可以做到这一点?我对轶事证据不感兴趣,或者对一些声称它应该有效的博客文章的引用感兴趣。我希望听到有人在现实世界中真正具备全功能设置的情况下,在真实条件下以及真正的疑问。
编辑:
让我再次重申,我不是这样的传闻证据表明,有人在什么地方有着几分运行安装有不明性质的工作非常感兴趣。我已经去了那里,我阅读了所有的博客文章,邮件列表,我联系了作者,但是当涉及真实场景的实际实施时,没有任何东西能像广告一样工作。考虑到任何项目的总体拥有成本,我绝对不会有兴趣听到有人在一个供应商以未知数量跳伞时能够把它拉下来的兴趣。的专家用特定的领域知识对整个安装进行修补,这些知识在任何地方都没有记录。
因此,如果您声称您的工作安装实际满足完整搜索的最低要求(请参阅上述要求),请提供以下内容,以便我们都能从Django的搜索解决方案中受益实际上解决了这个问题:
- 确切的Linux发行版,发行版,草垛(或同等学历)
- 确切的发布版本和发布搜索后端的版本,搜索引擎
- 确切的发布版本
- 公开(!)可用文档如何准确设置所有组件,以符合上述最低要求。
谢谢。
恐怕你有一个非常有效的点。我一直在尝试将djapian或haystack + xapian-haystack插入到一个网站,该网站在MySQL中使用LIKE实现了一个工作搜索功能,到目前为止,它看起来像准备一个可重现的工作设置将是一场噩梦。我已经甩掉了Djapian并且用大海捞针,但尽管开始很快,但我已经发现了一些bug(或文档短缺,我还不确定)。 – 2010-12-12 20:53:21