2

我对使用field_value_factorElasticSearch 有疑问。

我想实现的功能是

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

alpha = 1.0,使用 的脚本field_value_factor由下式给出

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

如此链接所示:

但是,当 时alpha != 1.0,我们如何使用 来给出权重(即 alpha)field_value_factor

你对此有什么想法吗?

4

1 回答 1

3

函数 score 可以级联,因此boost_factor和 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"
      }
   }
}
于 2014-08-18T22:06:54.023 回答