我使用的是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或为空它只使用原始分数?怎么做?
答案 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