Lucence快速入门系列之Lucence五步实现创建索引

174人浏览 / 0人评论

Lucence快速入门系列之Lucence五步实现创建索引

要想使用全文检索快速检索数据就必须要先对数据进行索引,Lucence建立索引共分五步:

第一步:创建一个java工程,并导入jar包。
    
第二步:创建一个indexwriter对象。
    1)指定索引库的存放位置Directory对象
    2)指定一个分析器,对文档内容进行分析。
第三步:创建field对象,将field添加到document对象中。
第四步:使用indexwriter对象将document对象写入索引库,此过程进行索引创建。并将索引和document对象写入索引库。
第五步:关闭IndexWriter对象。

下面是1个读取目录下的所有文本文件,并将文件索引的例子。

// 创建索引
@Test
public void testIndex() throws Exception {
	// 第一步:创建一个java工程,并导入jar包。
	// 第二步:创建一个indexwriter对象。
	Directory directory = FSDirectory.open(new File("D:\\temp\\index"));
	// Directory directory = new RAMDirectory();//保存索引到内存中 (内存索引库)
	//	Analyzer analyzer = new StandardAnalyzer();// 官方推荐
	Analyzer analyzer = new IKAnalyzer();// 中文分词器
	IndexWriterConfig config = new IndexWriterConfig(Version.LATEST, analyzer);
	IndexWriter indexWriter = new IndexWriter(directory, config);
	// 1)指定索引库的存放位置Directory对象
	// 2)指定一个分析器,对文档内容进行分析。
	// 第三步:创建field对象,将field添加到document对象中。
	File f = new File("D:\\Lucene&solr\\searchsource");
	File[] listFiles = f.listFiles();
	for (File file : listFiles) {
		// 第三步:创建document对象。
		Document document = new Document();
		// 文件名称
		String file_name = file.getName();
		Field fileNameField = new TextField("fileName", file_name, Store.YES);
		// 文件大小
		long file_size = FileUtils.sizeOf(file);
		Field fileSizeField = new LongField("fileSize", file_size, Store.YES);
		// 文件路径
		String file_path = file.getPath();
		Field filePathField = new StoredField("filePath", file_path);
		// 文件内容
		String file_content = FileUtils.readFileToString(file);
		Field fileContentField = new TextField("fileContent", file_content, Store.NO);

		document.add(fileNameField);
		document.add(fileSizeField);
		document.add(filePathField);
		document.add(fileContentField);
		// 第四步:使用indexwriter对象将document对象写入索引库,此过程进行索引创建。并将索引和document对象写入索引库。
		indexWriter.addDocument(document);

	}
	// 第五步:关闭IndexWriter对象。
	indexWriter.close();
}

 

全部评论