学习lucene5.5.4的笔记
说说几个常用的类。
OpenMode是一个枚举类,有三个元素,分别表示IndexWriter的打开模式。
CREATE:每次打开IndexWriter时清空当前索引目录下的索引,再新建索引。
APPEND:打开IndexWriter时在当前索引目录下进行追加索引。
CREATE_OR_APPEND:打开IndexWriter时如果当前索引目录下没有索引,那么新建索引,否则进行追加索引。
IndexWriterConfig默认的openMode是OpenMode.CREATE_OR_APPEND。
我使用的这个版本自带的有中文分词器,名为SmartChineseAnalyzer,聪明的中文分词器,它不在核心包,可以在smartcn这个包内找到,其实并不那么聪明,它的默认停词只有标点符号,效果并不好,使用时推荐自己去加载停词库,这里有个停词库,分享给大家。
Analyzer analyzer= new SmartChineseAnalyzer(WordlistLoader.getWordSet(IOUtils.getDecodingReader(Searcher.class, "stopword.txt",StandardCharsets.UTF_8), "//"));
//stopword.txt中就是我的停词
Field是添加到索引文档中的数据,称为域(相当于关系型数据库表中的字段)。
Field有很多的扩展子类,如IntField,StringField等,它们大部分默认都是可索引的,如果这个域不需要被索引,那么我们可以去操作FieldType解决。
IndexWriter拥有索引的增删改功能。
索引的删除并不是立即从磁盘删除,而是放入索引回收站中,可回滚操作,需立即删除时:writer.forceMergeDeletes();
所谓改并不像关系型数据库中那样,lucene是删了后在新赠。
最好不要想着使用索引文档的id去删和改一个文档,因为lucene对这个支持的不多(可能是我刚入门,至少api上相关的方法寥寥无几),最好是在建立索引时自己去维护一个id域,通过term或者查询这个id来精确的去删除或改。
numDocs():索引目录下的文档总数,包括内存中缓存的文档,计算删除项
maxDoc():索引目录下的文档总数,包括内存中缓存的文档,不计算删除项
numRamDocs():内存中缓存的文档总数(你当前正在索引的文档数量)
IndexOptions索引选项枚举类,下面是成员的解释,目前我能理解的大概意思就是这样,以后再修改。
NONE:不索引。
DOCS:只有域的完整文本索引。
DOCS_AND_FREQS:只有域的完整文本和分析后的词索引。
DOCS_AND_FREQS_AND_POSITIONS:只有域的完整文本和分析后的词和位置索引。
DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS:只有域的完整文本和分析后的词和位置以及偏移量索引。
lucene开发辅助工具:luke 下载地址https://github.com/DmitryKey/luke/releases
我使用的是lucene5.5.4,但luke貌似没有支持5.5.4的版本,临近的版本只有5.5.0和6.0.0,luke5.5.0和luke6.0.0都是基于jdk1.8开发的,所以尽管使用的lucene5.5.4是使用jdk1.7但使用luke时你必须给它配置一个jdk1.8的运行环境。由于lucene的api不向下兼容的原因,所以这两个临近的版本选择哪个都无所谓,临近的版本一般都不会有什么大的改动。
学习lucene5.5.4的笔记的更多相关文章
- 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案
国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...
- 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案
初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...
- 前端程序员学习 Golang gin 框架实战笔记之一开始玩 gin
原文链接 我是一名五六年经验的前端程序员,现在准备学习一下 Golang 的后端框架 gin. 以下是我的学习实战经验,记录下来,供大家参考. https://github.com/gin-gonic ...
- 设计模式学习起点 UML类图笔记
UML类图笔记 大学开设的软件设计课程一般都会学习UML类图,大部分关于设计模式的描述都是使用的UML类图,可以说类图的表示是学习设计模式的起点.UML定义类之间的关系主要有六种:泛化关系.实现关系. ...
- Coursera深度学习(DeepLearning.ai)编程题&笔记
因为是Jupyter Notebook的形式,所以不方便在博客中展示,具体可在我的github上查看. 第一章 Neural Network & DeepLearning week2 Logi ...
- hinton教授的本科生课程CSC321-机器学习中的神经网的笔记
最近一直在看仙守博友所记录的笔记 Hinton的CSC321课程(完结,待文字润色): 1.lecture1-NN的简介 2.lecture2-NN结构的主要类型的概述和感知机 3.lecture3- ...
- 深度学习-语言处理特征提取 Word2Vec笔记
Word2Vec的主要目的适用于词的特征提取,然后我们就可以用LSTM等神经网络对这些特征进行训练. 由于机器学习无法直接对文本信息进行有效的处理,机器学习只对数字,向量,多维数组敏感,所以在进行文本 ...
- 我的 CSDN 博客目录索引(主要记录了我学习视频、书籍的笔记,持续更新中)
我的 CSDN 博客地址: lw_power的专栏 - 博客频道 - CSDN.NEThttp://blog.csdn.net/lw_power 佟刚老师<Spring4视频教程>学习笔记 ...
- 学习javascript语言精粹的笔记
1.枚举: 用for in 语句来遍历一个对象中所有的属性名,该枚举过程将会列出所有的属性也包括涵数和方法,如果我们想过滤掉那些不想要的值,最为常用的过滤器为hasOwnProperty方法,以及使用 ...
随机推荐
- ie7,ie8 js中变量名和页面元素ID重名,报错
js变量名和一个div的id重名,报错.不知所以然...做个标记
- jquery each循环,实现break和continue的功能
break----用return false; continue --用return ture;
- DropDownList年份的添加
http://blog.sina.com.cn/s/blog_4b9e030e01007sc3.html
- hdu6446 Tree and Permutation 2018ccpc网络赛 思维+dfs
题目传送门 题目描述:给出一颗树,每条边都有权值,然后列出一个n的全排列,对于所有的全排列,比如1 2 3 4这样一个排列,要算出1到2的树上距离加2到3的树上距离加3到4的树上距离,这个和就是一个排 ...
- Codeforces 316C2 棋盘模型
Let's move from initial matrix to the bipartite graph. The matrix elements (i, j) for which i + j ar ...
- laravel 用户名登录
laravel 用户名登录 默认登录设置为用户登录 laravel 5.3+ 修改文件(app\Http\Controllers\Auth\LoginController.php)增加 public ...
- hdu-2036求任意多边形面积
改革春风吹满地 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- VScode中Go的相关插件的安装
一.安装Go插件失败 使用VScode时,当我们安装完go语言扩展时,新建一个go的源码文件,进行保存时,会提示我们需要安装一些go的扩展插件,可别小看这些插件,这些插件都是非常有用的,比如说自动补全 ...
- LocalDate test
import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.tim ...
- 关系型数据库---MySQL---对中文字段排序
1.对中文进行排序时会发生错误,原因是使用的字符集不是中文的字符集: 解决:CONVERT函数 SELECT a.id,a.`name`,a.ch_name FROM `user` a ORDER B ...