Lucene 实战:快速开始 创建索引

来源:互联网 发布:mac怎么切换大写字母 编辑:程序博客网 时间:2024/06/01 10:14
import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;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;import org.apache.lucene.document.NumericField;import org.apache.lucene.index.IndexWriter;import org.apache.lucene.index.IndexWriterConfig;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;import org.apache.lucene.util.Version;import org.junit.Test;/** * 创建索引 *  * @author Oliver *  */public class Index {private static String indexPath = System.getProperty("user.dir") + "\\index";private static String dataPath = System.getProperty("user.dir") + "\\data";@Testpublic void createIndex() throws IOException {// 创建分词器Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_34);// 根据文件路径创建索引库Directory dir = FSDirectory.open(new File(indexPath));// 创建IndexWriterIndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_34, analyzer);IndexWriter writer = new IndexWriter(dir, conf);// 数据文件File[] dataFile = new File(dataPath).listFiles();// 添加文件for (File file : dataFile) {writer.addDocument(getDocument(file));}// 关闭writer.close();}/** * 添加文件 *  * @param file * @return * @throws FileNotFoundException */private Document getDocument(File file) throws FileNotFoundException {Document doc = new Document();//文件内容doc.add(new Field("content", new FileReader(file)));//文件名字doc.add(new Field("filename", file.getName(), Field.Store.YES, Field.Index.NOT_ANALYZED));//文件路径doc.add(new Field("filepath", file.getAbsolutePath(), Field.Store.YES,Field.Index.NOT_ANALYZED));//文件大小doc.add( new NumericField("size").setLongValue(file.length()));return doc;}}