Lucene6.0学习笔记——建立索引
Lucene6.0学习笔记——建立索引
Mr_Vision 发表于1年前
Lucene6.0学习笔记——建立索引
  • 发表于 1年前
  • 阅读 70
  • 收藏 3
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

1.定义相关变量

private final static String filePath="E:\\workspace\\luceneDemo\\files";
private final static Path indexPath=Paths.get("E:\\workspace\\luceneDemo\\indexStore");
public static Analyzer analyzer = new SmartChineseAnalyzer();

filePath:需要创建索引的源文件地址

indexPath:索引保存地址

analyzer:定义分词器,这里采用lucene自带的中文分词器

2.建立索引

public static void createIndex(){
	List<Document> doc = File2DocumentUtil.files2Document(filePath);
	try {
		/*索引文件采用物理存储*/
		FSDirectory directory = FSDirectory.open(indexPath);
		/*索引文件内存存储*/
		//RAMDirectory directory1 = new RAMDirectory();
		//配置indexWriter,写入索引
		IndexWriterConfig config = new IndexWriterConfig(analyzer);
		IndexWriter indexWriter=new IndexWriter(directory, config);
		//创建之前删除所有索引
		indexWriter.deleteAll();
		//添加需要建立索引的Document
		indexWriter.addDocuments(doc);
		//提交写入
		indexWriter.commit();
		//关闭indexWriter
		indexWriter.close();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

3.文件转Document方法

public static List<Document> files2Document(String filePath) {
	File dir=new File(filePath);
	List<Document> list=new ArrayList<>();
	for(File file:dir.listFiles()){
		Document doc=new Document();
		doc.add(new TextField("name", file.getName(), Store.YES));
		doc.add(new StringField("path", file.getPath(), Store.YES));
		/*设置排序字段*/
		doc.add(new NumericDocValuesField("size",file.length()));  
		doc.add(new StringField("size", String.valueOf(file.length()), Store.YES));
		doc.add(new TextField("content", getFileContent(file), Store.YES));
		list.add(doc);
	}
	return list;
}

StringField:不会进行分词操作;

TextField:会进行分词操作。

共有 人打赏支持
粉丝 110
博文 47
码字总数 16858
×
Mr_Vision
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: