similarity

编辑

Elasticsearch 允许你为每个字段配置文本评分算法或相似度similarity 设置提供了一种简单的方法,可以选择除默认的 BM25 之外的文本相似度算法,例如 boolean

只有基于文本的字段类型(如 textkeyword)支持此配置。

可以通过调整内置相似度的参数来配置自定义相似度。有关此高级选项的更多详细信息,请参阅相似度模块

开箱即用,无需任何进一步配置即可使用的相似度只有以下几种:

BM25
Okapi BM25 算法。Elasticsearch 和 Lucene 中默认使用的算法。
boolean
一个简单的布尔相似度,当不需要全文排名,并且分数仅应基于查询项是否匹配时使用。布尔相似度赋予词项的分数等于它们的查询提升值。

当首次创建字段时,可以在字段级别设置 similarity,如下所示:

resp = client.indices.create(
    index="my-index-000001",
    mappings={
        "properties": {
            "default_field": {
                "type": "text"
            },
            "boolean_sim_field": {
                "type": "text",
                "similarity": "boolean"
            }
        }
    },
)
print(resp)
response = client.indices.create(
  index: 'my-index-000001',
  body: {
    mappings: {
      properties: {
        default_field: {
          type: 'text'
        },
        boolean_sim_field: {
          type: 'text',
          similarity: 'boolean'
        }
      }
    }
  }
)
puts response
const response = await client.indices.create({
  index: "my-index-000001",
  mappings: {
    properties: {
      default_field: {
        type: "text",
      },
      boolean_sim_field: {
        type: "text",
        similarity: "boolean",
      },
    },
  },
});
console.log(response);
PUT my-index-000001
{
  "mappings": {
    "properties": {
      "default_field": { 
        "type": "text"
      },
      "boolean_sim_field": {
        "type": "text",
        "similarity": "boolean" 
      }
    }
  }
}

default_field 使用 BM25 相似度。

boolean_sim_field 使用 boolean 相似度。