Elasticsearch нечеткость и сравнение нескольких терминов - PullRequest
0 голосов
/ 02 октября 2019

По сути, я в настоящее время создаю нечеткий поиск дляasticsearch, и у меня есть два вида поиска для сравнения

Один из них - автоматический нечеткий поиск

{
    "query": {
       "match": {
         "user": {
           "query": "test",
           "fuzziness": "AUTO"
         }
       }
    }
}

Другие - это запрос условий, соответствующий нескольким опечаткам

{
    "query" : {
        "terms" : {
            "user" : ["test", "testt", "tesr", "tst", ...]
        }
    }
}

при условии, что у терминов может быть около 20 с или более, я хочу знать, какой из них лучше использовать, а с точки зрения производительности лучше, и насколько масштабируемо совпадают термины со многимиключевое слово.

Ответы [ 2 ]

0 голосов
/ 02 октября 2019

Давайте начнем с Производительность:

Из нечетких документов :

Чтобы найти похожие термины, нечеткий запрос создаетнабор всех возможных вариаций или расширений поискового термина в пределах указанного расстояния редактирования. Затем запрос возвращает точные совпадения для каждого расширения.

Это означает, что оба запроса приведут к одинаковому выполнению, при этом запрос условий не анализирует фразы, что делает его более «эффективным», предполагая, чтоВы действительно хотите получить полное точное соответствие.

Лучшая практика:

Трудно ответить, не имея более подробной информации о вашем продукте, данных и сценарии использования.

С учетом вышесказанного я чувствую, что запрос терминов является лучшим решением, вы действительно хотите, чтобы part соответствовал park? или resort соответствует report? нечеткость сложно использовать вслепую, если вы в конечном итоге выберете этот путь, я рекомендую вам добавить некоторую дополнительную логику, чтобы иметь дело с этими результатами.

0 голосов
/ 02 октября 2019

Запрос на совпадение:

  1. Анализирует входную строку и строит из нее более простые запросы.
  2. Используется, когда вам нужна функция полнотекстового поиска.
  3. Вы можете использовать его для частичного совпадения, поиска токенов, нечеткой логики

Запрос запроса:

  1. Соответствует точным терминам.
  2. Должен использоваться, если искомый текст не требует анализа, т. Е. Текст должен соответствовать, как есть.
  3. Это быстрее, чем совпадение
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...