文档章节

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

Alan丶Wang
 Alan丶Wang
发布于 2016/07/15 18:33
字数 269
阅读 72
收藏 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:会进行分词操作。

© 著作权归作者所有

共有 人打赏支持
Alan丶Wang
粉丝 111
博文 47
码字总数 16858
作品 0
深圳
程序员
圣殿骑士博文索引

“圣殿骑士”技术博客,书写自己对技术的理解。天道酬勤、坚持不懈! 圣殿骑士很荣幸入住博客园和51CTO写技术博客,目前主要在一家外资企业从事项目管理、技术架构及企业技术培训工作。由于工...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

Mini 容器学习笔记1——环境搭建(基础篇)

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

netcasewqs ⋅ 2011/08/26 ⋅ 0

MySQL学习笔记一

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

Aaron_DMC ⋅ 2016/12/16 ⋅ 0

斯坦福ML公开课笔记15—隐含语义索引、奇异值分解、独立成分分析

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

xinzhangyanxiang ⋅ 2014/07/22 ⋅ 0

Mina系列文章索引

写了很多关于Apache Mina的文章,为了方便大家阅读,我将关于mina的一些文章做点儿索引。 Mina官网资料----------------------------------------------------------------- Mina官网是学习m...

Gaischen ⋅ 2012/11/28 ⋅ 15

Onenote Class Notebook Ctreator,协作教学的利器

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

dhqlx ⋅ 2014/12/25 ⋅ 0

Python GDAL课程笔记

说明: 这是一份来自网上的学习笔记,教程来自于犹他州立大学,课程名称为:Geoprocessing with Python using Open Source GIS 。 这份教程在网上有几个网站进行过发布,也无从判断哪份才是原...

openthings ⋅ 2016/04/25 ⋅ 0

还不收藏?最新的OpenStack学习目录在此!

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

lq1ns259ej3okyvk4jf ⋅ 2017/12/13 ⋅ 0

Mini 容器学习目录

Mini 容器学习笔记1——环境搭建(基础篇) Mini 容器学习笔记2——组件元数据(基础篇) Mini 容器学习笔记3——组件的注册(基础篇) Mini 容器学习笔记4——组件的生命周期(应用篇) Mini 容器学...

netcasewqs ⋅ 2011/08/26 ⋅ 0

OSChina 技术周刊第二十五期 —— 每周技术精粹

每周技术抢先看,总有你想要的! 移动开发 【翻译】AngularJS 应用访问 Android 手机的照片库 【软件】跨平台移动端开发 NativeScript 【博客】Android Studio建立jni开发环境 【博客】Xamar...

OSC编辑部 ⋅ 2015/03/15 ⋅ 3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

看东方明珠新媒体如何基于阿里视频云,构建完整的视频OTT平台SaaS服务

摘要: 东方明珠新媒体如何基于阿里云,搭建了面向第三方的视频SaaS服务?6月8日,上海云栖大会视频专场中,东方明珠新媒体股份有限公司云计算中心的副总周少毅带来了《东方明珠视频云》为题...

阿里云云栖社区 ⋅ 29分钟前 ⋅ 0

C#调用WebService实例和开发 VS2013

简单的理解就是:webservice就是放在服务器上的函数,所有人都可以调用,然后返回信息。 Web Service的主要目标是跨平台的可互操作性。为了实现这一目标,Web Service 完全基于XML(可扩展标...

布衣大侠 ⋅ 32分钟前 ⋅ 0

基于FlumeNG+Kafka+ElasticSearch+Kibana的日志系统

环境准备 1.服务器概览 hostname ip 操作系统 说明 安装内容 node1.fek 192.168.2.161 centos 7 node1节点 nginx,jdk1.8, flumeNG, elasticsearch slave1 node2.fek 192.168.2.162 centos ......

张shieppp ⋅ 32分钟前 ⋅ 0

问答网站已成过去,深度问答社区才是当下

曾几何时,各类问答网站数不胜数,从百度知道这类综合型问答网站到各种垂直细分的问答网站,都有不少,但到了移动互联网时代,很明显的一大趋势是,网站整体的流量都在下滑,随着移动智能设备...

ThinkSNS账号 ⋅ 35分钟前 ⋅ 0

Android平台架构(ART)

Android平台架构(ART) 本文目的:准确表述Android平台架构 本文转载自[Android官网] 本文定位:学习笔记 学习过程记录,加深理解。也希望能给学习的同学一些灵感 本文更新时间:2018.06.22(...

lichuangnk ⋅ 37分钟前 ⋅ 0

看东方明珠新媒体如何基于阿里视频云,构建完整的视频OTT平台SaaS服务

摘要: 东方明珠新媒体如何基于阿里云,搭建了面向第三方的视频SaaS服务?6月8日,上海云栖大会视频专场中,东方明珠新媒体股份有限公司云计算中心的副总周少毅带来了《东方明珠视频云》为题...

猫耳m ⋅ 38分钟前 ⋅ 0

Java 动态代理 原理解析

概要 AOP的拦截功能是由java中的动态代理来实现的。说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该切面逻辑或者在目标类函数执行之前,或者目标类函数执行之后,或者在目标...

轨迹_ ⋅ 40分钟前 ⋅ 0

js 获取当前时间

var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1970-????)myDate.getMonth(); //获取当前月份(0-11,0代表1月)myDate...

夜醒者 ⋅ 46分钟前 ⋅ 0

windows删除或修改本地Git保存的账号密码

在win10或者win7都是一样的步骤: (一)进入控制面板(二)选择用户账户(三)选择管理你的凭据(四)选择Windows凭据(五)选择git保存的用户信息(六)选择编辑或者进...

果树啊 ⋅ 47分钟前 ⋅ 0

8个基本的Docker容器管理命令

前言: 在这篇文章中,我们将带你学习 8 个基本的 Docker 容器命令,它们操控着 Docker 容器的基本活动,例如 运行run、 列举list、 停止stop、 查看历史纪录logs、 删除delete 等等。文末福...

java高级架构牛人 ⋅ 48分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部