2011-02-02 36 views
1

相當新的Solr 1.4 - 看起來確實非常強大。但是,當我試圖按照相關性(分數)和rating_value(每個結果的0到5星評級)的順序返回搜索結果時,我被卡住了。Solr Lucene - 基於0到5星級的提升相關性?

我試過用「評分desc,評分desc」來排序搜索結果,雖然這個工作,它感覺有點基本。

我最終希望根據它被評爲(0到5)的星數來提高搜索結果的相關性。因此五星級的成績應該是最高的。

我曾嘗試添加'rating_value:1^0.1 rating_value:2^0.2'等等,但這似乎大大提高了沒有關鍵字匹配的答案,但確實有很高的星級評分。

任何幫助非常感謝! 謝謝,Seb

回答

3

您在正確的軌道上添加「rating_value」條款與提升值。但是,請確保在構建查詢時,關鍵字條款是「必須」條款,這將要求文檔包含該條款才能將其返回。

從那裏你可以玩每個學期的相對提升值。如果評分提升太高,您可以提高關鍵詞的效果,反之亦然。重要的是要知道,提升的絕對值在各個領域不具有可比性,即關鍵字提升20倍,rating_value提高19個並不意味着關鍵字將更多地提升,主要是因爲長度標準化。有關更多信息,請參閱Lucene的相似性。

+0

啊是的,我明白了。我的問題是返回結果沒有查詢關鍵字匹配;他們只是因爲有評級而被展示。我如何使用我的查詢來管理您對「必須」條款的建議? 「q = foo rating_value:1^0.1 rating_value:2^0.2」 – seb835 2011-02-02 15:04:31

2

如果您使用DISMAX請求處理程序,則還應考慮使用bq(boost查詢)字段進行提升,因爲此提升僅影響已由用戶查詢匹配的文檔。

您可以在請求處理程序內的solrconfig.xml中預定義bq字段,例如

<str name="bq"> 
    rating_value:1^0.1 rating_value:2^0.2 
</str>