1.程序宏观结构图
2.创建索引过程
3.代码实现
创建索引库:
1) 创建JavaBean对象
2) 创建Docment对象
3) 将JavaBean对象所有的属性值,均放到Document对象中去,属性名可以和JavaBean相同或不同
4) 创建IndexWriter对象
5) 将Document对象通过IndexWriter对象写入索引库中
6) 关闭IndexWriter对象
Fled域属性
Jar包:
需要建立索引的文件:(对文件名字,大小,路径,内容进行存储,但是只对文件内容和名字建立索引)
代码:
1 // 创建索引
2 @Test
3 public void testIndex() throws Exception {
4 // 第一步:创建一个java工程,并导入jar包。
5 // 第二步:创建一个indexwriter对象。
6 Directory directory = FSDirectory.open(new File("E:\\lucene1\\index"));
7 // Directory directory = new RAMDirectory();//保存索引到内存中 (内存索引库)
8 // Analyzer analyzer = new StandardAnalyzer();// 官方推荐
9 Analyzer analyzer = new IKAnalyzer();// 官方推荐
10 IndexWriterConfig config = new IndexWriterConfig(Version.LATEST, analyzer);
11 IndexWriter indexWriter = new IndexWriter(directory, config);
12 // 1)指定索引库的存放位置Directory对象
13 // 2)指定一个分析器,对文档内容进行分析。
14 // 第三步:创建field对象,将field添加到document对象中。
15 File f = new File("E:\\lucene1\\searchfiles");
16 File[] listFiles = f.listFiles();
17 for (File file : listFiles) {
18 // 第三步:创建document对象。
19 Document document = new Document();
20 // 文件名称
21 String file_name = file.getName();
22 Field fileNameField = new TextField("fileName", file_name, Store.YES);
23 // 文件大小
24 long file_size = FileUtils.sizeOf(file);
25 Field fileSizeField = new LongField("fileSize", file_size, Store.YES);
26 // 文件路径
27 String file_path = file.getPath();
28 Field filePathField = new StoredField("filePath", file_path);
29 // 文件内容
30 String file_content = FileUtils.readFileToString(file);
31 Field fileContentField = new TextField("fileContent", file_content, Store.YES);
32
33 document.add(fileNameField);
34 document.add(fileSizeField);
35 document.add(filePathField);
36 document.add(fileContentField);
37 // 第四步:使用indexwriter对象将document对象写入索引库,此过程进行索引创建。并将索引和document对象写入索引库。
38 indexWriter.addDocument(document);
39
40 }
41 // 第五步:关闭IndexWriter对象。
42 indexWriter.close();
43 }
结果:至此创建索引完成,以后的搜索靠他们了。
4.luke可视化工具查看索引
查看存储的域信息
查看对文件名字建立的索引