如何使用衰减函数来处理弹性搜索的查询?

时间:2017-05-15 20:22:45

标签: elasticsearch

我正在使用弹性搜索来构建一个简单的搜索引擎。

我试图确定的一件事是,我希望能够让更多最近发布的文档更接近搜索结果的顶部,因此我使用" exp"衰变函数(高斯)。我显然错过了一些东西,因为它没有像我预期的那样工作。我摆弄这个数字无济于事。

目标是采用这一个查询(除了其中的公式之外),并使其返回结果顶部附近的最新文档。从字面上看,这个查询没有其他部分。我已经包含了"解释"信息的最高结果的一部分。

请帮忙!我不明白......

{        
  "query": {
    "function_score": {
      "exp": {
        "createdAt": {
            "origin": "now",
            "scale": "30d",
            "decay": 0.8,
            "offset": "7d"
        }
      }
    }
  }
}

第一个结果有这个值 " createdAt":" 2007-12-07T11:54:04.000Z",

我们有来自2017年的文件 - 前几篇文章来自2007年! 我不明白出了什么问题......

 "_explanation": {
          "value": 1,
          "description": "function score, product of:",
          "details": [
            {
              "value": 1,
              "description": "*:*, product of:",
              "details": [
                {
                  "value": 1,
                  "description": "boost",
                  "details": []
                },
                {
                  "value": 1,
                  "description": "queryNorm",
                  "details": []
                }
              ]
            },
            {
              "value": 1,
              "description": "min of:",
              "details": [
                {
                  "value": 1,
                  "description": "Function for field createdAt:",
                  "details": [
                    {
                      "value": 1,
                      "description": "exp(- MIN[0.0] * 8.608933306875375E-11)",
                      "details": []
                    }
                  ]
                },
                {
                  "value": 3.4028235e+38,
                  "description": "maxBoost",
                  "details": []
                }
              ]
            }
          ]
        }
      },

0 个答案:

没有答案