如何更改分数使用Solr结果添加字段值?

时间:2017-10-03 03:10:32

标签: solr function-query

我使用的是Solr 6.1,

我需要在每个结果中自定义分数,

这是原始结果:

    [
      {
        "_id": "59d2face138d070c14fccd0d",
        "plusrnak": 44.623055,
        "score": 80.439298
      },
      {
        "_id": "59d2face384eb78b23f60d78",
        "plusrnak": 36.508239,
        "score": 62.644288
      },
      {
        "_id": "59d2face70750b413d839136",
        "plusrnak": 80.446665,
        "score": 44.639681
      },
      {
        "_id": "59d2facee507560951445e3d",
        "plusrnak": 60.84082,
        "score": 38.997843
      },
      {
        "_id": "59d2face415b1ba891dfbb97",
        "plusrnak": 6.225893,
        "score": 38.279674
      },
      {
        "_id": "59d2facec792d7ff7ade6620",
        "plusrnak": 76.954612,
        "score": 23.405887
      },
      {
        "_id": "59d2face6958596fce9baa9a",
        "plusrnak": 5.903754,
        "score": 1.864721
      }
    ]

我想在每个分数中加上字段“plusrnak”值

像这样:

    [
      {
        "_id": "59d2face70750b413d839136",
        "plusrnak": 80.446665,
        "score": 125.086346
      },
      {
        "_id": "59d2face138d070c14fccd0d",
        "plusrnak": 44.623055,
        "score": 125.062353
      },
      {
        "_id": "59d2facec792d7ff7ade6620",
        "plusrnak": 76.954612,
        "score": 100.360499
      },
      {
        "_id": "59d2facee507560951445e3d",
        "plusrnak": 60.84082,
        "score": 99.838663
      },
      {
        "_id": "59d2face384eb78b23f60d78",
        "plusrnak": 36.508239,
        "score": 99.152527
      },
      {
        "_id": "59d2face415b1ba891dfbb97",
        "plusrnak": 6.225893,
        "score": 44.505567
      },

      {
        "_id": "59d2face6958596fce9baa9a",
        "plusrnak": 5.903754,
        "score": 7.768475
      }
    ]

怎么做?我可以在配置文件上设置吗?如何?

或者我可以使用“plusrnak”字段替换分数吗?如果为null或为空它只使用原始分数?怎么做?

1 个答案:

答案 0 :(得分:0)

这篇古老的博文实际上非常精彩且充满了解释。[1] 我通常不鼓励添加剂增强,因为你在可能不同的比例上添加值(lucene得分没有标准化,并且会因查询和语料库的变化而变化)。

如果您仍想要添加剂增强剂: 使用dismax(或edismax)和此请求参数: bf = plusrnak

来自Solr wiki:

字段

返回具有指定名称的字段的数字docValues或索引值。在其最简单的(单个参数)形式中,此函数只能用于单值字段,并且可以使用字段名称作为字符串进行调用,或者对于大多数传统字段名称,只需使用字段名称本身而不使用字段(...)语法。

使用docValues时,可以指定可选的第二个参数来选择多值字段的“min" or " max”值。

对于没有字段值的文档,将返回

更多细节请参见[2]

[1] https://nolanlawson.com/2012/06/02/comparing-boost-methods-in-solr/

[2] https://lucene.apache.org/solr/guide/6_6/function-queries.html#FunctionQueries-AvailableFunctions