similarity (相似度模型)

Elasticsearch 允许你为每一个字段配置一个得分算法或similarity(匹配算法)。similarity设置提供了一个简单的方式让你选择匹配算法,而不仅仅是默认的TF/IDF算法,比如可以选择BM25。

similarity主要用于text字段,但也可用于其他类型的字段。

自定义匹配算法可以通过修改内置匹配方法的参数来达到目的。要获取此专业选项更详细的解释,可以参考similarity module

对于能跳出以上限制,而不用任何其他配置的匹配算法只有一下两种:

BM25:

Okapi BM25算法。这个算法是ElasticsearchLucene的默认算法。可以参考Pluggable Similarity Algorithms获取更详细的资料。

classic:

TF/IDF 算法,也是ElasticsearchLucene的默认算法之一。可以参考 Lucene’s Practical Scoring Function 获取更详细的资料。

similarity可以在字段第一次创建时在字段级别进行设置,如下:

curl -XPUT 'localhost:9200/my_index?pretty' -H 'Content-Type: application/json' -d'
{
  "mappings": {
    "my_type": {
      "properties": {
        "default_field": { #1
          "type": "text"
        },
        "classic_field": {
          "type": "text",
          "similarity": "classic" #2
        }
      }
    }
  }
}
'

1

default_field 字段使用BM25匹配算法

2

classic_field 字段使用classic 匹配算法(即TF / IDF

Last updated