django-haystack: лучшие способы создания поисковых индексов для моделей с внешним ключом и полями «многие ко многим» - PullRequest
7 голосов
/ 12 июля 2011

Предложения, необходимые для создания более эффективных и эффективных поисковых индексов для моделей, имеющих внешний ключ и поля многие ко многим, при использовании стога сена с django.

Пример модели:

class Resource(models.Model):
   title = models.CharField(max_length=255)
   description = models.TextField(blank=True, null=True)
   content = models.ForeignKey(ResourceContent, unique=True)
   metadata = models.ManyToManyField(MetaData)

1 Ответ

5 голосов
/ 15 ноября 2011

вам не нужно объявлять

metadata = models.ManyToManyField(MetaData)

, вместо этого используйте цикл внутри шаблона индекса легко, в соответствии с рекомендациями, приведенными в документе

Связанные данные

Связанные данные несколькопроблематично иметь дело, так как большинство поисковых систем лучше работают с документами, чем с отношениями.Один из способов добиться этого - отменить нормализацию связанного дочернего объекта или объектов в шаблон документа родителя.Включение релевантных данных внешнего ключа или простой шаблонной метки Django {% for %} для итерации по связанным объектам может увеличить существенные данные в вашем документе.Будьте внимательны с тем, что вы включаете, и как вы его структурируете, так как это может повлиять на то, насколько хорошо результат может занять место в вашем поиске

http://docs.haystacksearch.org/dev/best_practices.html?highlight=loop

...