说说几个常用的类。

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的笔记的更多相关文章

  1. 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...

  2. 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...

  3. 前端程序员学习 Golang gin 框架实战笔记之一开始玩 gin

    原文链接 我是一名五六年经验的前端程序员,现在准备学习一下 Golang 的后端框架 gin. 以下是我的学习实战经验,记录下来,供大家参考. https://github.com/gin-gonic ...

  4. 设计模式学习起点 UML类图笔记

    UML类图笔记 大学开设的软件设计课程一般都会学习UML类图,大部分关于设计模式的描述都是使用的UML类图,可以说类图的表示是学习设计模式的起点.UML定义类之间的关系主要有六种:泛化关系.实现关系. ...

  5. Coursera深度学习(DeepLearning.ai)编程题&笔记

    因为是Jupyter Notebook的形式,所以不方便在博客中展示,具体可在我的github上查看. 第一章 Neural Network & DeepLearning week2 Logi ...

  6. hinton教授的本科生课程CSC321-机器学习中的神经网的笔记

    最近一直在看仙守博友所记录的笔记 Hinton的CSC321课程(完结,待文字润色): 1.lecture1-NN的简介 2.lecture2-NN结构的主要类型的概述和感知机 3.lecture3- ...

  7. 深度学习-语言处理特征提取 Word2Vec笔记

    Word2Vec的主要目的适用于词的特征提取,然后我们就可以用LSTM等神经网络对这些特征进行训练. 由于机器学习无法直接对文本信息进行有效的处理,机器学习只对数字,向量,多维数组敏感,所以在进行文本 ...

  8. 我的 CSDN 博客目录索引(主要记录了我学习视频、书籍的笔记,持续更新中)

    我的 CSDN 博客地址: lw_power的专栏 - 博客频道 - CSDN.NEThttp://blog.csdn.net/lw_power 佟刚老师<Spring4视频教程>学习笔记 ...

  9. 学习javascript语言精粹的笔记

    1.枚举: 用for in 语句来遍历一个对象中所有的属性名,该枚举过程将会列出所有的属性也包括涵数和方法,如果我们想过滤掉那些不想要的值,最为常用的过滤器为hasOwnProperty方法,以及使用 ...

随机推荐

  1. Runtime常用的几个应用场景

    Runtime常见的几个应用场景. Runtime常见应用场景 具体应用拦截系统自带的方法调用(Method Swizzling黑魔法) 实现给分类增加属性 实现字典的模型和自动转换 JSPatch替 ...

  2. linux的理解

    1.用户组 因为linux 是多人多任务系统 所有可能有很多人在主机人作业.比如 有A B C D 4个人 在linux主机上作业, A B C 3个人 在做同一个项目 建了一个文件夹这个文件只能A ...

  3. angularJs分层服务开发

    //控制层 app.controller('brandController' ,function($scope,$controller ,brandService){ $controller('bas ...

  4. gitflow工作流简介

    gitflow工作流是一种依赖于Git版本管理工具,按特定规范对项目开发.测试.上线流程进行管理的工作方式.它是一种为实现规范化管理的约定,它明确了各个分支的意义,使整个团队的分工协作更加和谐明晰. ...

  5. 「洛谷5017」「NOIP2018」摆渡车【DP,经典好题】

    前言 在考场被这个题搞自闭了,那个时候自己是真的太菜了.qwq 现在水平稍微高了一点,就过来切一下这一道\(DP\)经典好题. 附加一个题目链接:[洛谷] 正文 虽然题目非常的简短,但是解法有很多. ...

  6. node js linux / OS 安装

    rm -rf 删除文件夹名字rm -rf 软连接名称 1.安装taryum install -y tar 3. 下载node https://nodejs.org/en/download/ 4. 拷贝 ...

  7. linux 中iscsi服务

      ###############第一步: 创建一个2G的分区第二步: yum install targetcli -y 第三步:创建一个2G的分区,并同步  第四步:  执行tagetclils查看 ...

  8. vue(4)hello world

    在前一章基础上开发. 1.下载vue.js.(https://cn.vuejs.org/v2/guide/installation.html) 在hello-vue根目录下创建js文件夹,并将该vue ...

  9. mysql5.7脚本日常使用

    #查看数据库物理存放目录show variables like "%datadir%";#查看所有数据库show databases#选择数据库use your_db_name#查 ...

  10. Spring集成Quartz的3种方式

    1.使用xml配置方式 Maven依赖 <properties> <!-- spring版本号 --> <spring.version>4.2.2.RELEASE& ...