没有 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 只是一个包装器,它公开了一些不同的搜索引擎后端:
- 太阳能
- Elasticsearch
- 呼呼
- Xapian
可能还有其他后端以及插件可用。
所以这里真正的问题是,是否有一个搜索后端可以为我提供所需的功能,haystack 是否公开了该功能?
答案是,您可能可以使用 elasticsearch*,但请注意星号。
通常,在创建搜索索引时,最好以与创建无相关数据库时相同的方式来考虑文档,并且您希望这些文档尽可能扁平化。
因此,一种可能是在 paperreview 索引上有一个 char 字段数组。该数组将包含所有相关的外键引用。
另一种可能是在 elasticsearch 中使用“嵌套文档”。
最后,在 elasticsearch 中使用“父/子文档”。
您仍然可以使用 haystack 进行索引,但您可能希望直接使用原始后端之一,例如 pyelasticsearch 或 pyes。
