【实现步骤】
1.创建一个Directory对象,也就是索引库存放的位置。
2.创建一个indexReady对象,需要指定Directory对象。
3.创建一个indexsearcher对象,需要指定indexReady对象。
4.创建一个TermQuery对象,指定查询的域和查询的关键词。
5.执行查询。
6.返回查询结果,遍历查询结果并输出。
7.关闭indexReader对象。
【IndexSearch搜索方法】
【代码开发】
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", "java")); 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 }