Запрос, в котором строка поиска полностью содержит индексированную строку - PullRequest
0 голосов
/ 04 августа 2020

В моем индексе (с использованием Elasticsearch 5.6.16) я хотел бы проиндексировать такие слова, как «кошка» или «забавная собака». Теперь я хотел бы найти только те строки, которые полностью содержатся в моем поисковом запросе.

Примеры поисковых запросов должны возвращать

  • «Моя любимая кошка» -> [«кошка»]
  • «Мой забавный кот» -> [«кот»]
  • «Мой забавный пес» -> [«Забавный пес»]
  • «Моя забавная собака» -> []
  • «Мои забавные собачки» -> []
  • «Мой кот и моя забавная собачка» -> [«кот», «забавный пес»]

Знаете ли вы, какие анализаторы, токенизаторы или фильтры использовать для этой цели? Я уже пробовал стандартные анализаторы и анализаторы ключевых слов, но ни один из них не работал точно так, как я хотел. * Диалект). @search - это параметр (например, «Моя собака забавная»), а описание столбца содержит значения (например, «забавная собака» и «кошка»)

select * from pets where lower(@search) like lower(concat('%',description,'%'))

С уважением, Rokko

...