Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Mapping ›Mapping parameters

position_increment_gap

Проанализированные текстовые поля учитывают позиции терминов позиций, чтобы поддерживать запросы на близость или фразовые запросы. При индексировании текстовых полей с несколькими значениями между значениями добавляется «фиктивная» разделительная точка, чтобы предотвратить совпадение большинства фразовых запросов через значения. Размер этого разрыва настраивается с помощью position_increment_gap и по умолчанию равен 100.

Например:

PUT my-index-000001/_doc/1
{
  "names": [ "John Abraham", "Lincoln Smith"]
}

GET my-index-000001/_search
{
  "query": {
    "match_phrase": {
      "names": {
        "query": "Abraham Lincoln" 
      }
    }
  }
}

GET my-index-000001/_search
{
  "query": {
    "match_phrase": {
      "names": {
        "query": "Abraham Lincoln",
        "slop": 101 
      }
    }
  }
}

Этот фразовый запрос не соответствует нашему документу, что вполне ожидаемо.

Этот фразовый запрос соответствует нашему документу, даже если Abraham и Lincoln находятся в разных строках, потому что slop > position_increment_gap.

position_increment_gap можно указать в схеме. Например:

PUT my-index-000001
{
  "mappings": {
    "properties": {
      "names": {
        "type": "text",
        "position_increment_gap": 0 
      }
    }
  }
}

PUT my-index-000001/_doc/1
{
  "names": [ "John Abraham", "Lincoln Smith"]
}

GET my-index-000001/_search
{
  "query": {
    "match_phrase": {
      "names": "Abraham Lincoln" 
    }
  }
}

Первый термин в следующем элементе массива будет находиться на расстоянии 0 терминов от последнего термина в предыдущем элементе массива.

Фразовый запрос соответствует нашему документу, что странно, но именно это мы и запросили в схеме.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/position-increment-gap.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API