在没有 Haystack 的情况下,对 Django 进行与数据库无关的全文搜索的下一个最佳选择是什么?
我有一个像这样的模型:
class Paper(models.Model):
title = models.CharField(max_length=1000)
class Person(models.Model):
name = models.CharField(max_length=100)
class PaperReview(models.Model):
paper = models.ForeignKey(Paper)
person = models.ForeignKey(Person)
我需要按标题和审稿人姓名搜索论文,但我也想从一个人的角度进行搜索,找出他们审过和未审阅的论文。使用 Haystack,实现按标题和名称字段搜索的全文索引很简单,但据我所知,没有办法在没有特定人员审阅的情况下进行查找论文所需的“左外连接” .
最佳答案
Haystack 只是一个包装器,公开了一些不同的搜索引擎后端:
- Solr
- Elasticsearch
- 嗖嗖
- Xapian
可能还有其他后端可用作插件。
所以这里真正的问题是,是否有一个搜索后端可以为我提供所需的功能,并且 haystack 是否公开了该功能?
答案是,您可能可以使用 elasticsearch*,但请注意星号。
通常,在创建搜索索引时,最好以与创建无相关数据库相同的方式考虑文档,并且希望这些文档尽可能平坦。
因此,一种可能性可能是在 paperreview 索引上有一个 char 字段数组。该数组将包含所有相关的外键引用。
另一种可能是在elasticsearch中使用“嵌套文档”。
最后,在elasticsearch中使用“父/子文档”。
您仍然可以使用 haystack 进行索引,但需要进行一些黑客攻击,但您可能希望直接使用原始后端之一,例如 pyelasticsearch 或 pyes。
关于python - 无需 Haystack 的高效 Django 全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16794587/