到目前为止的故事:
决定使用 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
- 必须处理任意分组(即 AND/OR 周围的括号)
- 必须允许在全文搜索之前或之后进行 Django-ORM 过滤(即使用 Django 知道的全套过滤器对结果进行预处理/后处理)
- 或者,必须有一个工具来批量获取结果集并将其转换为 QuerySet
- 机器上应该很轻,所以最好不要安装大量的 JVM 和基于 Java 的应用服务器
有什么东西可以做到这一点吗?我对轶事证据或对一些声称它应该有效的博客文章的引用不感兴趣。我想听听有人在现实世界中,在真实条件下,通过真实查询实际拥有完整功能的设置。
编辑:
让我再重复一遍,我对有人在某个地方有一个正在运行的安装使用未指定属性的轶事证据不太感兴趣。我已经去过那里,我阅读了所有的博客文章、邮件列表,我联系了作者,但是当涉及到现实世界场景的实际实施时,没有任何东西能像宣传的那样奏效。
此外,下面的一位用户也提出了这一点,考虑到任何项目的 TCO,我绝对不想听到有人在某个地方能够在供应商空降未知数量的专家后将其拉下来。 - 使用无处记录的特定领域知识修补整个安装。
因此,如果您声称您有一个实际满足完整搜索的最低要求的工作安装(请参阅上面的要求),请提供以下内容,以便我们都能从实际解决问题的 Django 搜索解决方案中受益:
- 确切的 Linux 发行版、发行版、
- Haystack(或同等版本)的确切发布版本和搜索后端的发布版本,
- 搜索引擎的确切发布版本
- 公开 (!) 可用文档如何按照您的安装设置方式完全设置所有组件,以满足上述最低要求。
谢谢你。