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 可以在字段第一次创建时在字段级别进行设置,如下:

  1. curl -XPUT 'localhost:9200/my_index?pretty' -H 'Content-Type: application/json' -d'
  2. {
  3. "mappings": {
  4. "my_type": {
  5. "properties": {
  6. "default_field": { #1
  7. "type": "text"
  8. },
  9. "classic_field": {
  10. "type": "text",
  11. "similarity": "classic" #2
  12. }
  13. }
  14. }
  15. }
  16. }
  17. '

| 1 | default_field 字段使用 BM25 匹配算法 | | 2 | classic_field 字段使用 classic 匹配算法(即 TF / IDF) |

原文链接 : https://www.elastic.co/guide/en/elasticsearch/reference/5.3/similarity.html(修改该链接为官网对应的链接)

译文链接 : http://www.apache.wiki/pages/viewpage.action?pageId=10027417(修改该链接为 ApacheCN 对应的译文链接)

贡献者 : 郭峰ApacheCNApache中文网