【问题标题】:Elastic search - How to increase the _score in elastic search document弹性搜索 - 如何增加弹性搜索文档中的 _score
【发布时间】:2016-10-20 07:55:53
【问题描述】:

我有一个 _score 较少的文档,当我给出 size:100 时,在查询时未检索到该文档。我需要在前 25 个结果中提供该文档。如何做到这一点?有没有手动增加_score的选项?

【问题讨论】:

  • 只需在查询中添加一个带有数值的“提升”字段或类似字段并按该值排序(然后按分数排序)。
  • 您只想手动提升 1 个文档?我很确定这不是您要解决的问题
  • 我需要基于整数字段来提升文档。假设如果我有 10、100 的 max_doc 字段,那么 100 应该首先出现
  • 知道了,会在 10-20 分钟内回复您

标签: search elasticsearch


【解决方案1】:

我将描述一种可能的方法来解决这个问题

您可以使用 function_score 根据一些函数来提高分数:

function_score 查询提供了几种类型的评分函数。

script_score

重量

随机分数

field_value_factor

衰减函数:高斯、线性、exp

例如,这将使用 field_value_factor 通过乘以分数来提高分数:

{
  "query": {
    "function_score": {
      "query": {
        "match_all": {}
      },
      "script_score": {
        "script": "_score * doc['popularity'].value"
      },
      "boost_mode": "multiply"
    }
  }
}

要启用此动态评分,您需要根据 Elastic 的版本更改 yml 配置文件的行:

两者都可以(至少 2.4 是这样)

script.inline: true
script.indexed: true

或类似的东西:

script.disable_dynamic: false

有关动态脚本的更多信息 - https://www.elastic.co/guide/en/elasticsearch/reference/2.4/modules-scripting.html#enable-dynamic-scripting(您可以选择您正在使用的 Elastic 版本)

有关功能分数和功能类型的更多信息: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html

【讨论】:

    猜你喜欢
    • 2022-08-12
    • 2015-12-18
    • 2015-06-01
    • 2013-07-02
    • 2016-10-08
    • 1970-01-01
    • 2021-11-23
    • 2016-08-19
    • 1970-01-01
    相关资源
    最近更新 更多