













import org.apache.commons.pool.KeyedObjectPool;
import org.apache.commons.pool.impl.GenericKeyedObjectPool;
import org.apache.commons.pool.impl.GenericKeyedObjectPoolFactory;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.NGramPhraseQuery;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
public class LuceneSearcherPool {
public static void main(String[] args) {
GenericKeyedObjectPool.Config config = new GenericKeyedObjectPool.Config();
GenericKeyedObjectPoolFactory<String, IndexReader> poolFactory = new GenericKeyedObjectPoolFactory<String, IndexReader>(new IndexReaderFactory("/var/data/ostree/index"), config);
KeyedObjectPool<String, IndexReader> pool = poolFactory.createPool();
try {
String[] dates = {"2012-01-01", "2011-01-04", "2012-01-05"};
for (String date : dates) {
for (int i = 0; i < 10; i++) {
long start = System.currentTimeMillis();
IndexReader reader = pool.borrowObject(date);
test(reader);
pool.returnObject(date, reader);
System.out.println(date + ":" + i + ";" + (System.currentTimeMillis() - start));
}
}
pool.close();
} catch (Exception ex) {
}
}
public static void test(IndexReader reader) throws Exception {
String input = "java";
int num = 5;
IndexSearcher searcher = new IndexSearcher(reader);
TopDocs hits = searcher.search(query, num);
for (ScoreDoc scoreDoc : hits.scoreDocs) {
Document doc = searcher.doc(scoreDoc.doc);
}
searcher.close();
}
}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。