1

我用的是 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”字段替换分数吗?如果为空或为空,它只使用原始分数?怎么做?

4

1 回答 1

0

这篇旧博客文章实际上非常好且具有说明性。 [1] 我通常不鼓励加法提升,因为您在可能不同的规模上添加值(lucene 分数未标准化,并且会因查询而异,并且随着语料库的变化而变化)。

如果您仍然想要附加提升:使用 dismax(或 edismax)和此请求参数:bf= plusrnak

来自 Solr 维基:

场地

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

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

对于字段中没有值的文档,返回 0。

更多细节如下[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

于 2017-10-04T11:29:36.090 回答