2021SC@SDUSC
搜索过程(1)
Lucene搜索样例:
public static void main(String[] args)
{
try {
IndexReader reader=DirectoryReader.open(FSDirectory.open(new File("F:\\index")));
IndexSearcher searcher=new IndexSearcher(reader);
Analyzer analyzer=new StandardAnalyzer(Version.LUCENE_43);
QueryParser queryParser=new QueryParser(Version.LUCENE_43, "content", analyzer);
Query query=queryParser.parse("lucene");
TopDocs topDocs=searcher.search(query, 10);
ScoreDoc[] hits=topDocs.scoreDocs;
for(int i=0;i {
System.out.println("score:"+hits[i].score);
System.out.println("title:"+searcher.doc((hits[i].doc)).get("title"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
相关类的简单描述
1.IndexReader
IndexReader是一个抽象类,提供访问索引的接口。对一个索引的查询就是通过该接口。
有两种不同的IndexReader。
a.AtomicReader:不包含子reader 是一个原子类型的reader 支持存储域,文档值,词和倒排表
b.CompositeReader:
一个基于硬盘的IndexReader实例,通常是通过调用DirectoryReader.open()方法来构造的。
对于更有效地方法,通常通过一个唯一的ID来关联一个document。IndexReader是线程安全的。
2.AtomicReader
3.CompositeReader
4.IndexReaderContext
代表IndexReader层次关系的一个结构类。
5.DirectoryReader
CompositeReader的实现类,可以从一个directory中读取索引信息。
通常调用静态方法open(final Directory directory)
6.FindSegmentsFile
同当前段文件打交道的工具类。