Luncene学习二《搜索索引》

时间:2022-07-26
本文章向大家介绍Luncene学习二《搜索索引》,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

搜索索引的流程

第一步:创建一个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     }

执行之后的效果