В моем индексе (с использованием Elasticsearch 5.6.16) я хотел бы проиндексировать такие слова, как «кошка» или «забавная собака». Теперь я хотел бы найти только те строки, которые полностью содержатся в моем поисковом запросе.
Примеры поисковых запросов должны возвращать
- «Моя любимая кошка» -> [«кошка»]
- «Мой забавный кот» -> [«кот»]
- «Мой забавный пес» -> [«Забавный пес»]
- «Моя забавная собака» -> []
- «Мои забавные собачки» -> []
- «Мой кот и моя забавная собачка» -> [«кот», «забавный пес»]
Знаете ли вы, какие анализаторы, токенизаторы или фильтры использовать для этой цели? Я уже пробовал стандартные анализаторы и анализаторы ключевых слов, но ни один из них не работал точно так, как я хотел. * Диалект). @search - это параметр (например, «Моя собака забавная»), а описание столбца содержит значения (например, «забавная собака» и «кошка»)
select * from pets where lower(@search) like lower(concat('%',description,'%'))
С уважением, Rokko