说说几个常用的类。

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. [ZJOI2009]狼和羊的故事 BZOJ1412

    题目描述 “狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......” Orez听到这首歌,心想:狼和羊如此和谐,为什么不尝试羊狼合养呢?说干就干! Orez的羊狼圈 ...

  2. PHP 实现实现多线程

    前言 前些天帮同事查一个问题,第一次接触到了 PHP 的多线程,原以为 PHP 普遍都是单线程模型,并不适合多线程领域,花些时间翻了几个多线程的项目源码之后,发现 PHP 的多线程也颇有可取之处,活用 ...

  3. 设定计划的SMART原则

    SMART: Specific,Measurable, Attainable,Result-based, Time-based 设定计划,如果不去执行,设定目标,而不去实现,那也算是背叛自己的诺言,终 ...

  4. mybatis主键是在insert前生成还是之后生成

    oracle sequence 推荐每个表使用自己的sequence mysql 使用每个表的autoincreate来当主键 mybatis 操作insert时 主键的生成是在插入之前 还是之后? ...

  5. spring boot 启动时运行代码(2)ApplicationListener

    项目概览: StepExecutor: @Component @Slf4j public class StepExecutor implements Runnable { @Autowired pri ...

  6. codeforces之4.1学习记录

    记录一些之前没见过的代码: #include <bits/stdc++.h> using namespace std; typedef long long ll; #define INF ...

  7. 汉诺塔问题hdu 2065——找规律

    这类题目就是纸上模拟,找规律. 问题描述:在一块铜板上有三根杆,目的是将最左边杆上的盘全部移到右边的杆上,条件是不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允 ...

  8. 6-----selenuim和phantonJs处理网页动态加载数据的爬取

    动态数据加载处理 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材http://sc.chinaz.com/中的图片数据 #!/usr/bin/env python # -*- coding ...

  9. java——为什么要有接口?和抽象类有什么不一样?

    1.接口不是类,为什么? 接口如果是类,那就失去了java引入接口的意义了. java之所以引入接口,就是为了弥补不能多继承的缺点,在java中每个类只能有一个超类,但却可以实现多个接口. 2.接口可 ...

  10. beeline hiveserver2 start

    1. install hive 2. start hiveserver2 查看hiverserver2 是否正常运行: ps -ef | grep hive 2. start beeline 3. 链 ...