2013-10-14 110 views
0

我不能讓我的頭周圍Solr的某些字段排序, 比方說,我有這樣的一套文件:Solr的排序按相關

{"id": 126, 
"post": "Hello, welcomes you :)", 
"date": "2011-08-12T18:52:36Z", 
"user": "Ahmed", 
"user_photo": "t_4944949.jpeg", 
"likes": 1, 
"comments": 0} 

我只想和對它進行排序(喜歡,評論)優先級爲^ 2,日期優先級爲^ 1

什麼是sendax寫的? 注:q=*:*

感謝

回答

0

這是語法:

sort=<field name>+<direction>[,<field name>+<direction>] 

所以,你需要:

sort=date desc, sum(likes, comment) desc 

排序的順序是列出順序,看一下例子在這裏:http://wiki.apache.org/solr/CommonQueryParameters#sort

inStock desc, price asc //sort by "inStock" descending, then "price" ascending 
+0

但是哪一個比別人擁有更多的優先權,比方說我會添加更多的字段來排序 – Omiga

+0

它按照列表的順序排列,所以日期在這種情況下排在第一位。如果你反轉條款它改變優先 –

+0

我添加了優先級解釋我的回答 –

0

看起來你想給你的文檔的得分

2 * (likes + comments) + recency_score 

(其中recency_score依賴於date),並通過該評分結果進行排序。

你應該看看這個function query

recency_score取決於您的需求。請參閱此Solr FAQ以瞭解如何通過新近度提升文檔。

例如,您可能想要爲現在發佈的文檔給出1.0的評分,去年發佈的文檔評分爲(1/2),兩年前發佈的文檔評分爲(1/3)等等。以下查詢將爲您執行此操作:

q={!func}sum(product(2,sum(likes,comment)),recip(ms(NOW,date),3.16e-11,1,1)) 

其中3.16e-11只是1 /(一年中的毫秒數)。

+0

這正是我的意思,leme檢查它,並讓你回到你身邊 – Omiga