1.1.1、特殊查询
抽取公用的搜索方法:
public void search(Query query) throws Exception {
// 创建目录对象
Directory directory = FSDirectory.open(new File("C:\\tmp\\indexDir"));
// 索引的读取对象
IndexReader indexReader = DirectoryReader.open(directory);
// 索引的搜索工具
IndexSearcher searcher = new IndexSearcher(indexReader);
// 尝试查询,1-查询对象,2-查询的条数
// 返回的是前n条文档的对象,topDocs:包含文档的总条数,文档的得分数组
TopDocs topDocs = searcher.search(query, 10);
System.out.println("搜索的命中总条数:" + topDocs.totalHits);
// 获取得分文档的数组,得分文档包含文档编号以及得分
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
for (ScoreDoc scoreDoc : scoreDocs) {
System.out.println("文档编号" + scoreDoc.doc);
System.out.println("文档得分" + scoreDoc.score);
// 根据编号查询文档
Document document = indexReader.document(scoreDoc.doc);
System.