如何使用ElasticSearch进一步提高field_value_factor给出的分数?

时间:2014-08-16 15:18:59

标签: function boost elasticsearch field pyelasticsearch

我在使用field_value_factor和ElasticSearch时有一个问题。

我想实现的功能是

alpha * log(1 + beta * doc['popularity'].value)

alpha = 1.0时,使用field_value_factor的脚本由

提供
"field_value_factor": {
  "field": "popularity",
  "factor": beta,
  "modifier": "log1p"
}

this link所示:

然而,当alpha != 1.0时,我们如何使用field_value_factor给出权重(即alpha)?

你对此有什么想法吗?

1 个答案:

答案 0 :(得分:3)

功能得分可以级联,因此boost_factor and field_value_factor的组合 应该让你实现同样的目标。

{
   "query": {
      "function_score": {
         "query": {
            "match_all": {}
         },
         "functions": [
            {
               "boost_factor": <alpha>
            },
            {
               "field_value_factor": {
                  "field": "popularity",
                  "factor": <beta>,
                  "modifier": "log1p"
               }
            }
         ],
         "score_mode": "multiply"
      }
   }
}