我们的团队一直致力于将 drf-haystack 和 django-haystack 与 Solr 集成。它似乎很容易设置,并且可以完美地处理非常小的(<100 个对象)数据集。
一旦我们开始使用更多对象,性能就会下降。对少于 10k 个对象执行单次搜索需要 2 分钟以上。
经过调查,我意识到这至少部分是因为它正在进行数据库查询。然后我阅读了这个文档,现在我完全糊涂了。
干草堆的全部目的不是简化与 django 应用程序和搜索引擎的集成吗?为什么默认行为是进行数据库查询?(无论如何,仅使用基本的 Django 内置插件会更直接吗?)
似乎应该有一种方法可以避免访问数据库,但是尽管遵循了 Haystack 的文档,我们还没有弄清楚。在这一点上,我们放弃使用 haystack 来搜索和编写我们自己的自定义 solr 查询,以便从我们的 DRF 视图集中调用,而不是从 HaystackViewSet 继承。我们已经证明这完全解决了性能问题。
我想我在这里遗漏了一些明显的东西。谁能提供一些关于 haystack 的设计和预期目的的见解?