读书人

Lucene 从多个索引下搜索

发布时间: 2012-12-26 14:39:28 作者: rapoo

Lucene 从多个索引上搜索

事实上,在一些商业系统中,索引并非只存放在一个目录中,这样我们就要求将几个目录的索引进行一起查询。

代码:

?public static void main(String[] args) {
??try {
???/*File file1 = new File("d://test1");
???File file2 = new File("d://test2");
???Analyzer luceneAnalyzer = new StandardAnalyzer();
???IndexWriter writer1 = new IndexWriter(file1, luceneAnalyzer, true);
???writer1.setUseCompoundFile(false);
???IndexWriter writer2 = new IndexWriter(file2, luceneAnalyzer, true);
???writer2.setUseCompoundFile(false);
???
???Document doc1 = new Document();
???Document doc2 = new Document();
???
???Field f1 = new Field("bookname","钢铁是怎样炼成的",Field.Store.YES,Field.Index.TOKENIZED);
???Field f2 = new Field("price","26",Field.Store.YES,Field.Index.TOKENIZED);
???
???doc1.add(f1);
???doc1.add(f2);
???
???
???Field f3 = new Field("bookname","我的中华",Field.Store.YES,Field.Index.TOKENIZED);
???Field f4 = new Field("price","20",Field.Store.YES,Field.Index.TOKENIZED);
???doc2.add(f3);
???doc2.add(f4);
???
???writer1.addDocument(doc1);
???writer2.addDocument(doc2);
???
???writer1.close();
???writer2.close();*/
???

//创建查询的内容,包装成一个数组。
???String query1 = "钢";
???String query2 = "[10 TO 30]";
???String[] queries = {query1,query2};
???

?

//创建查询的field,包装成一个数组。
???String field1 = "bookname";
???String field2 = "price";
???String[] fields = {field1,field2};
???BooleanClause.Occur[] clause = {BooleanClause.Occur.MUST,BooleanClause.Occur.MUST};
???
???Query q = MultiFieldQueryParser.parse(queries, fields, clause,new StandardAnalyzer());
???
???System.out.println(q.toString());
???

?

//从所要查询的索引位置建立IndexSearcher
???IndexSearcher search1 = new IndexSearcher("d://test1");
???IndexSearcher search2 = new IndexSearcher("d://test2");
???
???IndexSearcher[] searchers = {search1,search2};
???
???MultiSearcher searcher = new MultiSearcher(searchers);
???
???Hits hits = searcher.search(q);
???for(int i=0;i<hits.length();i++)
???{
????System.out.println(hits.doc(i));
???}
???
???
???
??} catch (Exception e) {
???e.printStackTrace();
??}

?}

读书人网 >编程

热点推荐