lucene笔记-001-新建索引和读取索引
2017-06-24 17:51
253 查看
package com.test.lucene; import java.io.File; import org.apache.commons.io.FileUtils; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field.Store; import org.apache.lucene.document.LongField; import org.apache.lucene.document.StoredField; import org.apache.lucene.document.TextField; import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.index.Term; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TermQuery; import org.apache.lucene.search.TopDocs; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.util.Version; import org.junit.Test; public class Lucene001 { /** * 创建索引 * * @throws Exception */ @Test public void testInedx() throws Exception { // 第一步:新建工程,导入JAR包 // 第二步:创建IndexWriter对象 // 1)将索引保存在内存中: // Directory directory = new RAMDirectory(); // 2)将索引保存在磁盘中: Directory directory = FSDirectory.open(new File("D:/bbb/temp/index")); Analyzer analyzer = new StandardAnalyzer(); IndexWriterConfig config = new IndexWriterConfig(Version.LATEST, analyzer); IndexWriter iWriter = new IndexWriter(directory, config); // 第三步:读取待操作文档 File f = new File("D:/bbb/temp/sourse"); File[] listFiles = f.listFiles(); if (listFiles.length > 0) { for (File file : listFiles) { // 创建Document对象 Document doc = new Document(); // 文件名称 String file_name = file.getName(); doc.add(new TextField("file_name", file_name, Store.YES)); // 文件大小 long file_size = FileUtils.sizeOf(file); doc.add(new LongField("file_size", file_size, Store.YES)); // 文件路径 String file_path = file.getPath(); doc.add(new StoredField("file_path", file_path)); // 文件内容 String file_content = FileUtils.readFileToString(file); doc.add(new TextField("file_content", file_content, Store.YES)); // 第四步:将Document对象写入索引库 iWriter.addDocument(doc); } } // 第五步:关闭IndexWriter对象 iWriter.close(); } /** * 查询索引 * * @throws Exception */ @Test public void testSearch() throws Exception { // 第一步:创建一个Directory对象(索引库位置) Directory directory = FSDirectory.open(new File("D:/bbb/temp/index")); // 第二步:创建一个DirectoryReader对象 DirectoryReader ireader = DirectoryReader.open(directory); // 第三步:创建一个IndexSearcher对象 IndexSearcher isearcher = new IndexSearcher(ireader); // 第四步:创建一个TermQuery对象(需要查询的域和关键词) Query query = new TermQuery(new Term("file_content", "lucene")); // 第五步:执行查询 TopDocs topDocs = isearcher.search(query, 10); // 第六步:返回查询结果数组 ScoreDoc[] scoreDocs = topDocs.scoreDocs; if (scoreDocs.length > 0) { for (ScoreDoc scoreDoc : scoreDocs) { System.out.println("----------start----------"); Document document = isearcher.doc(scoreDoc.doc); // 文件名称 String file_name = document.get("file_name"); System.out.println(file_name); // 文件大小 String file_size = document.get("file_size"); System.out.println(file_size); // 文件路径 String file_path = document.get("file_path"); System.out.println(file_path); // 文件内容 String file_content = document.get("file_content"); System.out.println(file_content); System.out.println("-----------end-----------"); } // 第七步:关闭DirectoryReader对象 ireader.close(); } } }
相关文章推荐
- Lucene学习笔记之(一)简介和向文档写索引并读取文档
- lucene3.5学习笔记02--创建索引和建立搜索
- Lucene学习笔记(3)-索引操作
- 深入 Lucene 索引机制-学习笔记1
- Lucene5 学习笔记(2) —— 简单介绍 Lucene 搜索功能和索引的修改、删除
- 索引搜索与字符串查找的比较(Lucene学习笔记之一)
- 读取lucene索引域中的term
- 【Lucene学习笔记】索引的增删改查与查看工具
- Lucene学习笔记:Field.Index.* 域索引选项
- solr入门之lucene创建索引和查询索引及查询的源码读取类确定
- lucene学习笔记之构建索引
- lucene学习笔记3-索引-创建域选项
- lucene学习笔记2-查询索引
- Lucene4.10使用教程(二):简单的索引建立和读取步骤(HelloLucene)
- 学习Lucene笔记一:创建索引
- lucene学习笔记1-创建索引
- 【OpenCV学习笔记】【函数学习】一(MFC+OpenCV2.4.7读取摄像头之cvCaptureFromCAM()的索引问题
- Lucene4.10使用教程(二):简单的索引建立和读取步骤(HelloLucene)
- spring boot 学习笔记(001) 新建Eclipse工程