索引的检索相关代码,索引检索相关代码


常用类简介

Directory 

指定索引所在目录

FSDirectory 存放于磁盘上的文件系统
RAMDirectory 存放于内存中的目录,用于测试等用途
如Directory directory=FSDirectory.open(new File("filePath"));

IndexReader 

读索引,依靠Directory类初始化

IndexReader reader=DirectoryReader.open(directory);

IndexSearcher 

用于索引检索,依靠IndexReader类初始化。依靠Query类进行搜索。

如IndexSearcher searcher=new IndexSearcher(reader);

Analyzer 

分词器

如Analyzer analyzer=new StandardAnalyzer();

Term 

描述要查找单词所在的域(Field)与内容(content)。

如Term term=new Term("field","content");

“this”、“,”之类的停用词一般会被收录进索引中,但在搜索的时候被过滤掉。

QueryParser

查询串中可能包含一些高给语法,例如要查找包含“java”的pdf文件,可以使用查询串“java filetype:pdf”。所以可以用查询解析器QueryParser来解析,也就是根据查询串生成Query对象,如:

Analyzer analyzer=new StandardAnalyzer();
QueryParser qp=new QueryParser("field",analyzer);
Query query=qp.parse("queryString");

Query 

查询类,抽象类

TermQuery 最简单、最基本的Query,用来查询不切分的单词。依靠Term类初始化
如Query query=new TermQuery(term);

TopDocs 

存放IndexSearcher类的查询结果

如TopDocs topDocs=searcher.search(query,10);

ScoreDoc 

ScoreDoc[]数组用来存放查询结果中的文档信息

如ScoreDoc[] scoreDocs = topdocs.scoreDocs;

ScoreDoc 中的score属性表示相关程度,取值范围[0,1],越大越相关。

概览:

Directory directory=FSDirectory.open(new File("filePath"));
IndexReader reader=DirectoryReader.open(directory);
IndexSearcher searcher=new IndexSearcher(reader);
Analyzer analyzer=new StandardAnalyzer();
Term term=new Term("field","content");
Query query=new TermQuery(term);
TopDocs topDocs=searcher.search(query, 10);
ScoreDoc[] hits=topDocs.scoreDocs;
for(ScoreDoc hit :hits){
<span style="white-space:pre">	</span>System.out.println(hit.doc+hit.score);
}
			


相关内容