Нечеткий запрос Elasticsearch - max_expansions - PullRequest
0 голосов
/ 26 апреля 2018

Я используюasticsearch 5+, я сделал несколько запросов, используя нечеткий.Я понял следующие нечеткие параметры:

fuzziness, prefix_length.

Но я не могу понять, что такое max_expansions, я прочитал много статей, но мне трудно, потому что их малопримеры об этом.

Можете ли вы объяснить мне этот параметр, используя примеры?Как это работает вместе параметр нечеткости?

Напишите пример: я сделал этот запрос:

GET my-index/my-type/_search
{
  "query": {
    "fuzzy": {
      "my-field": {
        "value": "house",
        "fuzziness": 1,
        "prefix_length": 0,
        "max_expansions": 1
      }
    }
  }
}

У меня 4 шарда, в моем запросе найдено 6 результатов, потому что есть 6 документов с "hous"в" моем поле ".Если max_expansions это как предел в базе данных, максимальный результат должен быть 4 (потому что у меня есть 4 шарда)?Зачем возвращать 6 результатов?

1 Ответ

0 голосов
/ 26 апреля 2018

Цитата из сообщения в блоге Elasticsearch :

Параметр max_expansions, который определяет максимальное количество терминов, которым будет соответствовать нечеткий запрос перед остановкой поиска, также можетоказывают существенное влияние на производительность нечеткого запроса.Однако сокращение условий запроса имеет отрицательный эффект, поскольку некоторые действительные результаты могут быть не найдены из-за досрочного завершения запроса.Важно понимать, что предел запроса max_expansions работает на уровне сегмента, а это означает, что даже если установлено значение 1, могут совпадать несколько терминов, все из разных сегментов.Такое поведение может создать впечатление, что max_expansions не действует, поэтому следует помнить, что подсчет возвращаемых уникальных терминов не является правильным способом определения, работает ли max_expansions.

В основномэто означает, что за один шаг, когда Elasticsearch вызывает нечеткий запрос, он ограничивает число рассматриваемых при поиске терминов до max_expansions.Как было написано, это не так очевидно, как, например, limit в базах данных, потому что здесь, в Elasticsearch, он работает с осколками.Вероятно, более ожидаемых результатов у вас будет настройка Elasticsearch только с одним осколком локально и тестирование поведения.

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