lucene-编写HitCollector直接访问搜索结果

来源:互联网 发布:星际老男孩淘宝店没了 编辑:程序博客网 时间:2024/05/16 01:41

 使用直接方式访问搜索结果中每个文档的内容是比hits中采用缓存方式(遍历返回的所有hits对象)性能更好的办法,使用自定义的HitCollector来实现

  假设要对返回的所有书将其与URL匹配,对每个文档都要访问,

public class BookLinkCollector extendsHitCollector{ 

private IndexSearcher searcher;

private HashMap documents=newHashMap();

public BookLinkCollector(IndexSearcher searcher){

   this.searcher=searcher;

}

public void collect(int id,floatscore){//HitCollector必须实现的方法

   try{

      Document doc=searcher.doc(id);

      documents.put(doc.get("url"),doc.get("title"));

   }catch (IOException e){

   }

}

public Map getLinks(){

    returnCollections.unmodifiableMap(documents);

}

}

下面使用以上的类

TermQuery query=new TermQuery(new Term("contents","junit"));

IndexSearcher searcher=getSearcher();

BookLinkCollector collector=new BookLinkCollector(searcher);

searcher.search(query,collector);

searcher.close();

Map linkMap=collector.getLinks();

assertEquals("java DEVELOPMENT",linkMap.get(http://www.xxx.com));

原创粉丝点击