// 查询索引库代码
@Test
public void queryIndex() throws Exception {
// 准备索引库位置目录
String path = "F:\\indexs";
// 读取索引
DirectoryReader reader = DirectoryReader.open(FSDirectory
.open(new File(path)));
// 使用indexSearcher来搜索索引库
IndexSearcher indexSearcher = new IndexSearcher(reader);
// 准备查询条件
String qName = "基础";
// 创建查询解析器
QueryParser qParser = new QueryParser("title", new StandardAnalyzer());
// 解析查询字段,使用基本分词器算法,给你的查询条件在进行分词
Query query = qParser.parse(qName);
// 查询前10条记录,返回匹配度最高的10条记录
// 返回文档概要信息:文档ID,文档的得分:得分越高,匹配度越高
TopDocs topDocs = indexSearcher.search(query, 10);
// 获取文档的命中数
int totalHits = topDocs.totalHits;
System.out.println("文档的名字数量:" + totalHits);
// 获取文档得分数组
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
//遍历得分数组
for (ScoreDoc sdoc : scoreDocs) {
//获取文档id/
int docID = sdoc.doc;
//获取文档得分
float score = sdoc.score;
//更据文档id查询文档对象
Document doc = indexSearcher.doc(docID);
//获取id,title,context的值
String id = doc.get("id");
String title = doc.get("title");
String content = doc.get("content");
System.out.println("文档ID"+docID+"||文档得分:"+score);
System.out.println("ID"+id+"||title:"+title+"||content"+content);
}
}
}
IndexSearcher重要对象 ,
存入和检索的分词器要相同