Link Search Menu Expand Document Documentation Menu

位置增量间隙

position_increment_gap 映射参数定义了多值字段在索引时词元之间的位置距离。这会影响 match_phrasespan 查询在搜索同一字段的多个值时的行为方式。

默认情况下,多值字段中的每个新值都被视为与前一个值之间相隔 100 个位置。这有助于防止在搜索可能跨越不同字段值的短语时出现误报。

设置位置增量间隙

使用以下请求创建一个名为 articles 的索引,其中包含一个类型为 texttags 字段,并将 position_increment_gap 设置为 0

PUT /articles
{
  "mappings": {
    "properties": {
      "tags": {
        "type": "text",
        "position_increment_gap": 0
      }
    }
  }
}

索引多值字段

使用以下请求索引一个 tags 字段包含多个值的文档:

PUT /articles/_doc/1
{
  "tags": ["machine", "learning"]
}

使用 match_phrase 查询进行搜索

使用以下 match_phrase 查询在 tags 字段中搜索“machine learning”:

GET /articles/_search
{
  "query": {
    "match_phrase": {
      "tags": "machine learning"
    }
  }
}

结果表明短语匹配成功,因为 position_increment_gap 被设置为 0,允许来自不同值的词元被视为相邻。

{
  ...
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 0.5753642,
    "hits": [
      {
        "_index": "articles",
        "_id": "1",
        "_score": 0.5753642,
        "_source": {
          "tags": [
            "machine",
            "learning"
          ]
        }
      }
    ]
  }
}

如果 position_increment_gap 保持为 100,则不会返回任何匹配结果,因为词元 machinelearning 将被视为相距 100 个位置。

剩余 350 字符

有问题?

想要贡献?