【问题标题】:how does field_value_factor work in elasticsearch?field_value_factor 如何在弹性搜索中工作?
【发布时间】:2017-03-27 19:24:39
【问题描述】:

文档说使用 field_value_factor 值:

"field_value_factor": {
  "field": "popularity",
  "factor": 1.2,
  "modifier": "sqrt",
  "missing": 1
}

“这将转化为以下评分公式:

sqrt(1.2 * doc['popularity'].value) "

但我不明白 sqrt(1.2 * doc['popularity'].value) 做了什么?是否乘以每次命中的原始分数以创建新分数?是添加的吗?我可以改变它是乘还是加?

这是在function_score["boost_mode"]中定义的吗?

【问题讨论】:

    标签: elasticsearch elasticsearch-5


    【解决方案1】:

    是的,你的方向是正确的。两个属性控制个人分数的整体组合以及功能分数和自然评估分数的分数。他们是

    • score_mode - 此变量控制计算分数的组合方式:

    • boost_mode - 此变量控制查询分数和计算分数的组合方式

    Reference

    看看下面的查询

    {
        "query": {
            "function_score": {
                "query": {
                    "match_all": {}
                },
                "functions": [{
                    "field_value_factor": {
                        "field": "popularity",
                        "factor": 1.2,
                        "modifier": "sqrt",
                        "missing": 1
                    }
                }, {
                    "linear": {
                        "distance": {
                            "origin": "0",
                            "scale": "0.4"
                        }
                    }
                }, {
                    "gauss": {
                        "price": {
                            "origin": "0",
                            "scale": ".08"
                        }
                    }
                }],
                "score_mode": "multiply",
                "boost_mode": "sum"
            }
        }
    }
    

    由于 score_mode 是乘法,如您所见,我的函数分数查询中有三个函数,所以这将乘以每个函数的分数

    function_score = score_linear * score_gauss * score_field_value_factor
    

    再次 - boost_mode 是总和,所以我的最终分数将是函数分数和查询分数评估的总分数的总和。

    document_score = function_score + query_score。

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-12
      • 2021-08-21
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2017-05-12
      • 2017-11-09
      • 1970-01-01
      相关资源
      最近更新 更多