Hits详解

来源:互联网 发布:上班族如何赚外快知乎 编辑:程序博客网 时间:2024/05/21 18:44
//====Hits详解====//


//这是Hits的几个公有的接口
//取得当前结果集的数量
//public final int length()


//取得当前结果集中第N个Document
//public fianal Document doc(int n) throws IOException


//取得当前结果集中第N个Document的得分
//public final float score(int n) throws IOException


//取得当前结果集中第N个Document的索引内部ID值
//public final int id(int n) throws IOException


//取得对Hits集合中的遍历对象
//public ITerator iterator() 




package hits;


import javax.management.Query;


import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.TermQuery;


import indexSearcher.IndexSearcher;


//演示一下这些方法的使用
class Fangfa{
//初始化一个IndexSearcher
IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);

//构建一个Term对象
Term t = new Term("bookname", "女");

//构建一个Query对象
Query q = new TermQuery(t);

//检索
Hits hit = searcher.searcher(q);

//显示
for(int i = 0; i < hits.length(); i++){
System.out.println(hits.doc(i));
System.out.println(hits.score(i));
System.out.println(hits.id(i));
System.out.println("=====================");
}
}








public class Hits {
//先建立索引
public void Index(){
IndexWriter writer = new IndexWriter(INDEX_STORE_PATH, new StandardAnalyzer(), true);
Document doc = null;
Field field = new Field("bookname", "美女与野兽", Field.Store.YES, Field.Index.TOKENIZED);
for(int i = 0; i <= 100000; i++){
doc = new Document();
doc.add(field);
writer.addDocument(doc);
}
writer.close();
}

IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);
Term t = new Term("bookname", "女");
Query q = new TermQuery(t);
//搜索(bookname: 女)
Hits hits = searcher.search(q);

//计算取出第10个搜索结果所花费的时间
Date start = new Date();
Document d1 = hits.doc(10);
System.out.println(d1);
System.out.println(hits.id(10));
System.out.println(d1.get("bookname"));
Date end = new Date();
System.out.println("cost time :" + (end.getTime() - start.getTime())+ "ms");

//随着对10万个检索结果不用位置的文档进行访问,发现其访问时间并不一样,
//有着很大的差别。越靠后访问时间越长。因此一次性取回所有的结果做法是不可取的,
//这就涉及了Hits的内部缓存(请看下一篇博客)








}
0 0
原创粉丝点击