Как запрашивать связанные модели в поиске Haystack - PullRequest
0 голосов
/ 29 мая 2020

Я использую Haystack с бэкэндом Elasticsearch для поиска связанных моделей. Учитывая модели simpleisti c:

class Album(models.Model):
   name = models.CharField(max_length=100)
   description = models.TextField()

class Photo(models.Model):     
    album = models.ForeignKey("app.Model", on_delete=models.CASCADE)
    name = models.CharField(max_length=100)   
    description = models.TextField()

Учитывая поисковый запрос 'ab c', я хотел бы, чтобы результаты поиска соответствовали 'ab c' в любом названии или описании альбома, или любую фотографию, но иметь возможность представить результаты по альбому с совпадающими фотографиями, вложенными в альбом.
Другими словами, альбом считается совпадением, если он имеет совпадение в его описании или названиях, или если он содержит фотографии, которые совпадение в их имени или описании.
Результаты должны выглядеть так:

Album 1  
  No photo

Album 2  
  Photo 1
  Photo 2
  ...  

Я пробовал использовать разные индексы для каждой модели, но связь теряется в процессе, или используйте только один индекс и проиндексируйте все фотографии в поле MultiValuefield, но я не уверен, как вернуть только те фотографии, которые совпадают в SearchQuesyset, объединяющем обе модели. Я видел, как можно использовать вложенные запросы в Elacticsearch, как в этом gist , но я не уверен, что это необходимо, так как мне нужно увеличить только альбом, а не фотографии. Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...