Поиск изображений трясогузки
Я реализую насыщенное имиджем веб-приложение с трясогузкой и эластичным поиском. Для поиска изображений я хочу использовать эластичный поиск и встроенные возможности трясогузки для индексации и поиска изображений.
Изображения в трясогузке помечены, и я хочу использовать эти теги для поиска изображений. Индексирование изображений уже работало из коробки, и теперь я борюсь с их поиском. Проблема в том, что я хочу искать текст в тегах. 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
?