文档章节

Lucene6.0学习笔记——建立索引

AlanVision
 AlanVision
发布于 2016/07/15 18:33
字数 269
阅读 74
收藏 3

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:会进行分词操作。

© 著作权归作者所有

共有 人打赏支持
AlanVision
粉丝 111
博文 47
码字总数 16858
作品 0
深圳
程序员
Mini 容器学习笔记1——环境搭建(基础篇)

一. 环境下载 到Mini 容器的官方网站下载NLite框架的二进制文件,下载并解压后就可以了。 我们使用NLite框架需要用到下面的文件: NLite.dll(必要) 二. 建立NLite应用程序 新建一个控制台应用...

netcasewqs
2011/08/26
0
0
MySQL学习笔记一

MySQL目录结构 配置my.ini MySQL5.7的my.ini位于ProgramDataMySQLMySQL Server 5.7目录下(可能有的版本的my.ini就在安装目录下),该该目录下还有一个data目录存放我们的创建的数据库。 打开...

Aaron_DMC
2016/12/16
27
0
斯坦福ML公开课笔记15—隐含语义索引、奇异值分解、独立成分分析

斯坦福ML公开课笔记15 我们在上一篇笔记中讲到了PCA(主成分分析)。PCA是一种直接的降维方法,通过求解特征值与特征向量,并选取特征值较大的一些特征向量来达到降维的效果。 本文继续PCA的话...

xinzhangyanxiang
2014/07/22
0
0
还不收藏?最新的OpenStack学习目录在此!

导读 使用这些指南、教程和其他重要的学习资源,可以了解OpenStack技术层面的情况。 随着OpenStack不断成熟并从采用的第一阶段转移到生产云中, OpenStack 社区的重点也发生了转变——比以往...

lq1ns259ej3okyvk4jf
2017/12/13
0
0
Onenote Class Notebook Ctreator,协作教学的利器

OneNote Class Notebook Creator是一个帮助您建立班级笔记的SharePoint 在线程序,这个应用程序可以创建一个班级笔记本,其中包括三种类型的子笔记本。 1、 学生笔记本 — — 每个老师和学生...

dhqlx
06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

以太坊总结

一、概念说明 1.以太坊(Ethereum blockchain)由V神(Vitalik Buterin)发明,是一个交易记录的永久数据库,它以一个“无信任”的交易系统来运行,不需要任何第三方信任机构即可进行点对点的...

盼望明天
33分钟前
1
0
Java并发工具类——AtomicInteger

基本类型int的递增等操作并不是线程安全的,加上synchronized又会影响性能,因此在并发情况下我们应该使用AtomicInteger,下面通过一个例子验证一哈。 public class TestAtomicInteger {...

东都大狼狗
35分钟前
1
0
基于CentOS7.2系统对RabbitMQ单机版安装过程

准备虚拟机系统 我的系统如下 系统版本7.2 安装perl yum install perl 安装wget工具 yum install -y wget 安装相关依赖工具 yum install ncurses ncurses-base ncurses-devel ncurses-libs ...

凌晨一点
39分钟前
1
0
Maven常用命令

Maven常用命令 说到命令,则不得不提一下环境变量,在之前的博文中简单提了一下环境变量的配置,这里具体说一下。说完环境变量的配置,然后就是Maven的常用命令,这里说的是常用的几个命令,...

星汉
56分钟前
0
0
Flink操作mysql kafka和hbase

主程序 package com.streaming.flink;import java.util.Properties;import org.apache.flink.api.common.functions.FlatMapFunction;import org.apache.flink.api.common.functi......

守望者之父
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部