similarity编辑

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

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

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

无需任何进一步配置即可开箱即用的唯一相似度是

BM25
Okapi BM25 算法。Elasticsearch 和 Lucene 中默认使用的算法。
boolean
一种简单的布尔相似度,用于不需要全文排名且分数应仅基于查询词是否匹配的情况。布尔相似度为词语赋予与其查询提升值相等的分数。

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

response = client.indices.create(
  index: 'my-index-000001',
  body: {
    mappings: {
      properties: {
        default_field: {
          type: 'text'
        },
        boolean_sim_field: {
          type: 'text',
          similarity: 'boolean'
        }
      }
    }
  }
)
puts 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 相似度。