2013-04-16 97 views
2

如何將搜索結果的分數舍入爲2位小數?排序的小數點後2位的舍入分數 - SOLR 4.2

我可以使用圓整得分嗎?

我需要somethink這樣的:

在Solr的4.2版本

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

我想通過實地訂單排序搜索結果,但我得到了不相關的結果第一。我得到了幾千個結果。所以,我想在的訂單得分之間做出妥協。

+0

你的目標是什麼?與相同查詢的其他分數相比,得分只有相關性。 – phisch

+0

謝謝。我編輯了這個問題。 – tasmaniski

回答

4

功能查詢需要索引字段和score是不是一個真正的領域,因此你不能使用它。但我喜歡femtoRgon的方法。下面是一個其他版本

你可以結合使用RINT()/產品()與query()

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

Substitue 作者:愛麗絲與您的查詢。我不確定性能影響是什麼,因爲它運行子查詢。你將必須檢查。

+0

是的,femtoRgon的方法非常好,但它不能應用。 – tasmaniski

+0

我喜歡的是與rint()和product()的組合,因爲沒有round()函數查詢。 query()解決方案是否適合您? – phisch

+0

我用rint()函數使用了query()函數,但是效果不好。現在使用product()方法的工作非常流行。謝謝! – tasmaniski

1

沒有roundfunction query,我所知道的,但有rint這輪爲int,我相信像你可以使用:

sort=rint(product(score,100)) desc, orders desc 
+0

我收到錯誤「排序參數無法解析爲查詢...」。我認爲不能在排序功能中使用分數?你試試這個嗎? – tasmaniski

0

而不是使用默認的solr QueryComponent使用scorePrecisionComponent這將削減額外的精度和給你的排序條件更多的權重。 您可以通過配置solr參數(scorePrecision)將分數精確度更改爲所需的值。

相關問題