Lucene3 6的分頁查詢

2021-09-01 08:41:53 字數 1270 閱讀 2566

分頁查詢只需要傳入每頁顯示多少條記錄,當前是第幾頁就可以了。

當然是對搜尋返回的結果進行分頁,並不是對搜尋結果的總數量進行分頁,因為我們搜尋的時候都是返回前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就是乙個...