Поиск термина как отдельной строки, так и нескольких строк - PullRequest
0 голосов
/ 08 января 2019

Я настраиваю свой эластичный экземпляр без схемы (без предварительного сопоставления), и приложение требует, чтобы пользователи могли выполнять поиск по полю, содержащему слово, которое может или не может быть разбито на токены в несколько строк. Например, поле может содержать слово «ONETWO». Спецификация требует, чтобы пользователь мог иметь возможность искать «ONETWO», «ONE» и «TWO» и получать тот же документ. Кажется, нет простого способа сделать это даже с помощью специального токенизатора (и я не думаю, что ДОЛЖЕН быть простой способ сделать это - или каким-либо образом вообще). Просто хочу подтвердить мои мысли.

1 Ответ

0 голосов
/ 08 января 2019

Очень легко удовлетворить ваши требования, используя пользовательский анализатор, который использует n-граммовый токенизатор . Вы даже можете передать его на фильтр токенов в нижнем регистре, чтобы в вашем случае даже ваш текст был ONETWO но если пользователь ищет one, One, ONE, он должен получить результат. Хотя для этого вам нужно применить другое время поиска анализатора, подробнее об этом https://www.elastic.co/guide/en/elasticsearch/reference/current/search-analyzer.html.

См. https://devticks.com/how-to-improve-your-full-text-search-in-elasticsearch-with-ngram-tokenizer-e346f29f8ddb для получения дополнительной информации и дайте мне знать, если вам нужна какая-либо информация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...