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