分頁查詢只需要傳入每頁顯示多少條記錄,當前是第幾頁就可以了。
當然是對搜尋返回的結果進行分頁,並不是對搜尋結果的總數量進行分頁,因為我們搜尋的時候都是返回前n條記錄。
例如indexsearcher.search(query, 100);//只返回前100條記錄
/*** 對搜尋返回的前n條結果進行分頁顯示
* @param pagesize 每頁顯示記錄數
* @param currentpage 當前頁
* @throws parseexception
* @throws corruptindexexception
* @throws ioexception
*/public void paginationquery(string keyword,int pagesize,int currentpage) throws parseexception, corruptindexexception, ioexception ;
queryparser queryparser = new multifieldqueryparser(version.lucene_36,fields,analyzer);
query query = queryparser.parse(keyword);
indexreader indexreader = indexreader.open(directory);
indexsearcher indexsearcher = new indexsearcher(indexreader);
//topdocs 搜尋返回的結果
topdocs topdocs = indexsearcher.search(query, 100);//只返回前100條記錄
int totalcount = topdocs.totalhits; // 搜尋結果總數量
scoredoc scoredocs = topdocs.scoredocs; // 搜尋返回的結果集合
//查詢起始記錄位置
int begin = pagesize * (currentpage - 1) ;
//查詢終止記錄位置
int end = math.min(begin + pagesize, scoredocs.length);
//進行分頁查詢
for(int i=begin;i}@test
public void testpaginationquery() throws corruptindexexception, parseexception, ioexception
Lucene分頁查詢
個人認為最好每一次分頁導航都執行一次新的 查詢。color red lucene舊版本中常用方法 color hits中儲存的並不是真正的document,因此可以通過hits.doc index 的方式取出在一定範圍內的document。在獲 得hits後可以用類似下面的方法進行分頁處理 priv...
Lucene的組合查詢
在lucene中實現組合查詢的方法很多,我目前用過的方法有三種,使用multifieldqueryparser,使用filter,使用boolean query。1.使用multifieldqueryparser 構建parser的時候使用multifieldqueryparser,查詢時便可以同時...
lucene的學習 範圍查詢
對於lucene的範圍查詢,可以使用rangquery,或者使用rangfilter。但對於rangquery有個缺點,可能導致異常toomanyclause異常。因為對於不同的query,最後都是轉化為termquery.而rangquery,就是將這個範圍內的所有term 每乙個term就是乙個...