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

4 篇文章 0 订阅
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";
	@Test
	public void createIndex() throws IOException {
		// 创建分词器
		Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_34);
		// 根据文件路径创建索引库
		Directory dir = FSDirectory.open(new File(indexPath));
		// 创建IndexWriter
		IndexWriterConfig 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;
	}
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值