Elasticsearch 中 Weight 和 boost 的区别

Difference between Weight and boost in Elasticsearch

我阅读了有关 Elasticsearch 中的提升的信息。我们可以在索引或查询时应用提升。索引时间提升是一种静态提升,不建议使用。查询时间提升本质上是动态的。查询时间提升是一种很好的首选方法。

我们还可以为字段添加提升。例如,我们正在多个字段中搜索一个术语。我们可以提升一个字段来改变文档的分数。

{
   "match":{"title":{"query":"test string","boost":10}}
},

我读到了有关体重的内容。

{
     "filter": { "match": { "test": "cat" } },
     "weight": 42
}

我的理解是对字段应用权重以更改相关性或分数。 Boost 应用于查询以更改相关性或得分。

但是我不确定重量和提升的区别。

有人可以通过一些例子纠正我理解重量和提升之间的区别吗?

1. Elastic Search 中的相关性调优正在改变字段相互加权的方式或提高给定字段内值的相关性. 注意:您必须至少有两个架构字段才能调整相关性。

2. 权重应用于字段. 提升 set-up 在字段之上,但它们应用于 字段值

3. 权重

  • 每个字段的可能权重为 0 到 10,10 是最重要的权重。

    curl -X GET 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/search'
    -H 'Content-Type: application/json'
    -H 'Authorization: Bearer search-soaewu2ye6uc45dr8mcd54v8'
    -d'{ “search_fields”:{ “标题”: { “重量”:10 }, “描述”: { “重量”:1 }, “状态”: { “重量”:2 } }, “查询”:“山脉” }'

这里我们只要求 return 结果中的三个字段:标题、描述和状态。 我们对每个字段进行加权:分别为 10、1 和 2。

4. 提升

  • 有 4 种增强。使用提升来增加相关性。

    { “询问” : { “dis_max”:{ “查询”:[ { “匹配” : { “资格”: { “查询”:“社交媒体”, “提升”:2 } } }, { “匹配” : { “cover_letter”:“社交媒体”} } ] } } }

在这里,我们为在简历中列出“社交媒体”的求职者增加 disjunction max query。此示例将“资格”字段中的查询匹配提高了 2,而如果“社交媒体”出现在 cover_letter 字段中则没有任何提高。

在这些示例中,无论如何,权重都硬固定到字段,其中提升硬固定在查询“社交媒体”上,但前提是它在内部匹配资格领域。希望这有帮助..

  1. Elastic Search doc on the matter
  2. A really good Boosting example including negative_boost, field_value_factor, and date based weight decay
  3. 关于此事的其他非常有用的链接boost_1, boost_2, boost_3, boost_4, weight_1

字段相互加权,因为增强是基于字段内的给定值。

权重: 每个字段的可能权重为 0 到 10,其中 10 是最重要的权重。 例如:如果我们希望人们根据更重视标题的查询找到他们正在寻找的页面,那么我们需要优先考虑标题字段。我们可以增加它的权重,使它比其他领域更有影响力。如果标题有更高的权重,人们会在顶部找到标题中存在此页面的文档。

{
  "search_fields":{ 
    "title": { 
      "weight": 10 
    }, 
    "subtitle": { 
      "weight": 5 
    }, 
    "description": { 
      "weight": 2 
    } 
  }, 
  "query": "Elastic" 
}

这里我们只对 return 3 个字段请求弹性,即标题、副标题、描述,相应的权重为 10、5、2。

提升: 权重应用于字段。提升在字段顶部 set-up,但它们应用于字段值。 在数字、日期或地理位置字段上提升时,您需要定义一个函数参数和一个因子。根据提升的不同,有四种类型的函数:线性、指数、高斯和对数。该函数和因子用于计算提升相关性分数的一半,称为提升值。另一半是原始文档分数。 它们结合起来产生总体文档分数,它决定了结果集的顺序

{
  "query": "Elastic", 
  "boosts": {
    "is_elastic_query": [ 
      { 
        "type": "value", 
        "value": "true", 
        "operation": "multiply", 
        "factor": 10 
      } 
      ] 
  } 
}

这里我们假设 is_elastic_query 是一个值为 true 或 false 的字段。如果值为真,我们将使用价值提升因子 10 来提升它。

有关详细信息和示例,请在下面找到 link:

https://www.elastic.co/guide/en/app-search/current/relevance-tuning-guide.html