`
baobeituping
  • 浏览: 1042183 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Lucene从结果中取出数据

阅读更多

有些应用,比如我们首先要搜索一个Person的索引文件,然后通过该索引文件得到和该人对应的客户编码,然后通过客户编码再去查和客户对应的客户信息。

这样要进行两次索引的查找。但是LUCENE提供了一个默认的QueryFilter的实现,他可以从搜索的结果中再次查找。

 

例子:(以上篇文档的索引为例)

public static void main(String[] args) {
  try {

 //首先通过搜素查询0001-0004的结果
   Term begin = new Term("bookNumber", "0001");
   Term end = new Term("bookNumber", "0004");
   RangeQuery q = new RangeQuery(begin, end, true);
   

 //通过将该查询的QUERY放置到 QueryFilter中
   QueryFilter filter = new QueryFilter(q);
   

//再制定
   Term normal = new Term("securitylevel",2+"");
   IndexSearcher searcher = new IndexSearcher("d://demo");
   TermQuery query = new TermQuery(normal);
   
   System.out.println(q.toString());
   Hits hits = searcher.search(query,filter);//制定查询的时候,将过滤器配置进行,这样相当于在0001-0004的结果中找securitylevel=2的结果信息
   for (int i = 0; i < hits.length(); i++) {
    System.out.println(hits.doc(i));
   }
  } catch (Exception e) {
   e.printStackTrace();
  }

 }

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics