搜索索引的流程
第一步:创建一个Directory对象,也就是索引库存放的位置
第二步:创建一个IndexReader对象,需要指定Directory对象
第三步:创建一个indexsearcher对象,需要指定IndexReader对象
第四步:创建一个TermQuery对象,指定查询的域和查询的关键词。
第五步:执行查询.
第六步:返回查询结果。遍历查询结果并输出。
第七步:关闭IndexReader对象
1 // 搜索索引 2 @Test 3 public void testSearch() throws Exception { 4 // 第一步:创建一个Directory对象,也就是索引库存放的位置。 5 Directory directory = FSDirectory.open(new File("D:\temp\index"));// 磁盘 6 // 第二步:创建一个indexReader对象,需要指定Directory对象。 7 IndexReader indexReader = DirectoryReader.open(directory); 8 // 第三步:创建一个indexsearcher对象,需要指定IndexReader对象 9 IndexSearcher indexSearcher = new IndexSearcher(indexReader); 10 // 第四步:创建一个TermQuery对象,指定查询的域和查询的关键词。 11 Query query = new TermQuery(new Term("fileName", "lucene")); 12 // 第五步:执行查询。 13 TopDocs topDocs = indexSearcher.search(query, 10); 14 // 第六步:返回查询结果。遍历查询结果并输出。 15 ScoreDoc[] scoreDocs = topDocs.scoreDocs; 16 for (ScoreDoc scoreDoc : scoreDocs) { 17 int doc = scoreDoc.doc; 18 Document document = indexSearcher.doc(doc); 19 // 文件名称 20 String fileName = document.get("fileName"); 21 System.out.println(fileName); 22 // 文件内容 23 String fileContent = document.get("fileContent"); 24 System.out.println(fileContent); 25 // 文件大小 26 String fileSize = document.get("fileSize"); 27 System.out.println(fileSize); 28 // 文件路径 29 String filePath = document.get("filePath"); 30 System.out.println(filePath); 31 System.out.println("------------"); 32 } 33 // 第七步:关闭IndexReader对象 34 indexReader.close(); 35 36 }
执行之后的效果