我們使用solr查詢資料時,有時候難免需要獲得經過排序之後的資料。在頁面上 使用solr查詢的時候,如下圖:
我們只要直接再上圖的sort框中,輸入
要排序的字段+排序方式(即desc/asc)
然後查詢就可以得到排序後的結果。但是這畢竟是solr自動做的排序,如果我們想要在**層次上面使用solr排序的話,那要怎麼樣呢?
以下是乙個sort使用的例項(是專案中用到的一部分**,所以需要各位看官自己剔除一些不必要的**段)。
public listcompanyresultscid(string tiaojian) else
// 根據id排序且用游標完成分頁
solrquery.setsort("id", solrquery.order.desc);
try
}} else
if (results.size() == results.getnumfound() || cursormark.equals(response.getnextcursormark())) else
} catch (solrserverexception | ioexception e) ", e);}}
return resultmap;
}
接手這個專案也有幾天時間了,我發現這個專案中,似乎都是用的是id去做排序。今天正好遇到乙個需要用updatetime做排序的需求。所以我就在上文這個**的基礎上面,加了一些改動,想增加一下**的可復用性。如下:
/**
* 排序功能
* @param tiaojian
* @param sort
* @return
*/public listcompanyresultscid(string tiaojian,string sort) else
// 排序。
solrquery.setsort(sort, solrquery.order.asc);
try
}} else
if (results.size() == results.getnumfound() || cursormark.equals(response.getnextcursormark())) else
} catch (solrserverexception | ioexception e) ", e);}}
return resultmap;
}
看上去好像沒有什麼問題,但是執行起來確實會報錯。
報錯如下:
debug一下發現是游標分頁的問題。
上網搜了一下,用游標做深度分頁說是只能用主鍵排序。
那我要是想用時間排序怎麼辦?我上網沒有搜到相關的回答。索性就自己找了找方法。
後來發現可以set兩次,如果是用時間排序,那麼我就先時間再id,如下:
至於是用desc還是用asc,這個倒是沒有什麼關係,大家不要看到**被誤導了。按照自己的需求來就可以。
Linux管道pipeline使用時需要注意的問題
1.管道會將前乙個命令的輸出作為後乙個命令的輸入 root node01 ll more total 94 dr xr xr x.2 root root 4096 oct 15 07 19 bin dr xr xr x.5 root root 1024 oct 15 00 17 boot drwxr...
fixture使用時需要注意的問題
今天單測不太順利,主要是fixture使用不熟悉,記錄兩個問題 bug 1 經過定位發現是fixture資料始終不能灌入導致的,檔案如下 machine1 id 1 machine1 id 2 期望有兩條資料,實際只有一條,原因是在rspec灌資料時裝載yml,而這裡的資料是個hash,結果key相...
Go語言WaitGroup使用時需要注意什麼
go語言waitgroup使用時需要注意什麼?前言waitgroup在go語言中,用於執行緒同步,單從字面意思理解,wait等待的意思,group組 團隊的意思,waitgroup就是指等待一組,等待乙個系列執行完成後才會繼續向下執行。golang 中的 waitgroup 一直是同步 gorout...