lucene 3.5版本分页怎么做啊

 我来答
1039725910
2014-11-11 · TA获得超过318个赞
知道小有建树答主
回答量:364
采纳率:100%
帮助的人:271万
展开全部

已测试过

import java.io.File;
import java.util.Random;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.LogDocMergePolicy;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.Sort;
import org.apache.lucene.search.SortField;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
public class Question937672531867963092 {
public static final String INDEX_PATH = "E:\\lucene-demo-index\\937672531867963092\\";
private static final String FIELD_COIN = "coin";
public static void main(String[] args) {
createIndex();
//我创建的索引里有12394个值为7的Document
print(String.valueOf(7), 1239, 10);
System.out.println("==========");
print(String.valueOf(7), 1240, 10);
System.out.println("==========");
print(String.valueOf(7), 1241, 10);
System.out.println("==========");
}
public static void print(String v, int page, int pageSize) {
try {
Directory directory = FSDirectory.open(new File(INDEX_PATH));
IndexReader indexReader = IndexReader.open(directory);
IndexSearcher indexSearcher = new IndexSearcher(indexReader);
int results = page * pageSize;
BooleanQuery booleanQuery = new BooleanQuery();
booleanQuery.add(new BooleanClause(new TermQuery(new Term(FIELD_COIN, v)), BooleanClause.Occur.MUST));
Sort sort = new Sort(new SortField(FIELD_COIN, SortField.INT));
TopDocs topDocs = indexSearcher.search(booleanQuery, results, sort);;
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
int totalHits = topDocs.totalHits;
for(int i=(page-1) * pageSize;i<page*pageSize&&i<totalHits;i++) {
Document document = indexSearcher.doc(scoreDocs[i].doc);
System.out.println(document.get(FIELD_COIN));
}
indexSearcher.close();
indexReader.close();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void createIndex() {
try {
Directory directory = FSDirectory.open(new File(INDEX_PATH));
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);
IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_35, analyzer);
LogDocMergePolicy mergePolicy = new LogDocMergePolicy();
mergePolicy.setMergeFactor(100);
indexWriterConfig.setMergePolicy(mergePolicy);
IndexWriter indexWriter = new IndexWriter(directory, indexWriterConfig);
for(int i=0;i<123456;i++) {
Document document = new Document();
document.add(new Field(FIELD_COIN, String.valueOf(new Random().nextInt(10)), Field.Store.YES, Field.Index.NOT_ANALYZED));
indexWriter.addDocument(document);
}
indexWriter.forceMerge(1);
indexWriter.commit();
indexWriter.close(true);
} catch(Exception e) {
e.printStackTrace();
}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式