2

如何将搜索结果的分数四舍五入到小数点后 2 位?

我可以使用四舍五入的分数吗?

我需要一些想法,例如:

/?q=term&sort=round(score, 2) desc, orders desc

在 Solr 4.2 版中

我想按字段顺序对搜索结果进行排序,但我首先没有得到相关结果。我得到了几千个结果。所以,我想在 field ordersscore之间做出妥协。

4

3 回答 3

4

函数查询需要索引字段并且score不是真实字段,因此您不能使用它。但我喜欢 femtoRgon 的方法。这是另一个版本

您可以将 rint()/product() 与query()结合使用

q=rint(product(query({!v="author:alice"}) ,100))&defType=func&fl=*,score&sort=score desc, author desc

用您的查询替换作者:alice 。我不确定性能影响是什么,因为它运行子查询。你必须检查一下。

于 2013-04-16T19:12:19.943 回答
1

我不知道没有round 函数查询,但是有rint哪些舍入到一个 int,我相信你可以像这样使用它:

sort=rint(product(score,100)) desc, orders desc
于 2013-04-16T18:45:18.723 回答
0

而不是使用默认的 solr QueryComponent 使用scorePrecisionComponent,它将切断额外的精度并在您的排序条件上给予更多的权重。您可以通过配置 solr 参数 (scorePrecision) 将分数精度更改为您想要的值。

于 2015-06-01T11:00:24.347 回答