Поиск изображений трясогузки

Я реализую насыщенное имиджем веб-приложение с трясогузкой и эластичным поиском. Для поиска изображений я хочу использовать эластичный поиск и встроенные возможности трясогузки для индексации и поиска изображений.

Изображения в трясогузке помечены, и я хочу использовать эти теги для поиска изображений. Индексирование изображений уже работало из коробки, и теперь я борюсь с их поиском. Проблема в том, что я хочу искать текст в тегах. Wagtail предоставляет функцию search() в диспетчере объектов, которую можно использовать для поиска:

images = Image.objects.search("sometag")

Чтобы ограничить поиск по конкретному полю, можно сделать следующее:

images = Image.objects.search("sometag", fields=['title'])

Теперь ограничимся тегом, который определен как связанное поле для поиска:

search_fields = CollectionMember.search_fields + [
    index.SearchField('title', partial_match=True, boost=10),
    index.AutocompleteField('title'),
    index.FilterField('title'),
    index.RelatedFields('tags', [
        index.SearchField('name', partial_match=True, boost=10),
        index.AutocompleteField('name'),
    ]),
    index.FilterField('uploaded_by_user'),
]

Я ожидаю, что функция search() будет работать с параметром 'tag' или 'tag.name':

images = Image.objects.search("sometag", fields=['tags.name'])
images = Image.objects.search("sometag", fields=['tags'])

Но я получаю только следующую ошибку:

wagtail.search.backends.base.SearchFieldError: Cannot search with field "tags.name". Please add index.SearchField('tags.name') to Image.search_fields.

или же

wagtail.search.backends.base.SearchFieldError: Cannot search with field "tags". Please add index.SearchField('tags') to Image.search_fields.

Как я могу использовать fields=... функциональность с RelatedFields определение в Images?

0 ответов

Другие вопросы по тегам