1. Field域属性分类

添加文档的时候,我们文档当中包含多个域,那么域的类型是我们自定义的,上个案例使用的TextField域,那么这个域他会自动分词,然后存储
            我们要根据数据类型和数据的用途合理的选择合适的域
            Field类:
                StringField(fieldName,fieldValue,Stroe.YES/NO) 存储的数据类型为字符串,包含索引,是否存储根据Stroe定义,不会经过分析器
                StroeField(fieldName,fieldValue) 支持多种数据类型,不分析,不建立索引,默认保存到索引库当中
                LongPoint(name,value) 会进行分析,会创建索引,但是不会保存到索引库当中
                TextField(fieldName,fieldValue,Stroe.YES/NO) 会分析,会创建索引,是否保存取决Store

2. 添加索引

@Test
public void createDocument() throws IOException {
//创建IndexWriter对象 参数一:索引库位置 参数二:指定配置
IndexWriter indexWriter=new IndexWriter(FSDirectory.open(new File("E:\\Y2学习\\Lucene\\索引库\\Index").toPath()),
new IndexWriterConfig(new IKAnalyzer()));
//创建一个文档对象
Document document=new Document();
document.add(new TextField("fieldName","hehe.txt", Field.Store.YES));
document.add(new StoredField("fieldPath","c://hehe.txt"));
document.add(new LongPoint("fieldSize",123));
document.add(new StoredField("fieldSize",123));
document.add(new TextField("fieldContent","ojdbc14和ikanalyzer的maven找不到的解决办法,手动发布oJdbc14到maven仓库,手动发布ikanalyzer到maven,同时本教程适用于所有jar包发布 下载 IKAnalyzer结合Lucene使用和单独使用例子 简单性能测试 11-26 阅读数 1890 IKAnalyzer是一个开源基于JAVA语言的 .", Field.Store.YES));
//创建索引,将文档添加到索引库当中
indexWriter.addDocument(document);
//关闭
indexWriter.close();
}

3. 修改索引:原理-先删除再添加

/**
* 索引修改,修改fieldName域中关键词匹配到全文检索的文档
* @throws IOException
*/
@Test
public void updateDocument() throws IOException {
//创建IndexWriter对象 参数一:索引库位置 参数二:指定配置
IndexWriter indexWriter=new IndexWriter(FSDirectory.open(new File("E:\\Y2学习\\Lucene\\索引库\\Index").toPath()),
new IndexWriterConfig(new IKAnalyzer())); //创建文档
Document document=new Document();
document.add(new TextField("fieldName","new.txt", Field.Store.YES));
document.add(new StoredField("fieldPath","c://new.txt"));
document.add(new LongPoint("fieldSize",456));
document.add(new StoredField("fieldSize",456));
document.add(new TextField("fieldContent","修改fieldName为全文检索的文档,进行文档替换,先删除掉fieldName为全文检索的两个文档,再添加一个fileName为new的新文档", Field.Store.YES)); //修改 参数一为条件 参数二为修改的文档值
indexWriter.updateDocument(new Term("fieldName","全文检索"),document); //关闭
indexWriter.close();
}

4.删除索引

4.1 删除全部:慎用

@Test
public void deleteAllDocument() throws IOException {
//创建IndexWriter对象 参数一:索引库位置 参数二:指定配置
IndexWriter indexWriter=new IndexWriter(FSDirectory.open(new File("E:\\Y2学习\\Lucene\\索引库\\Index").toPath()),
new IndexWriterConfig(new IKAnalyzer())); //删除索引
indexWriter.deleteAll();
//关闭
indexWriter.close();
}

4.2 根据域和关键词删除

/**
* 根据域和关键词进行删除
* @throws IOException
*/
@Test
public void deleteByFieldAndTermDocument() throws IOException {
//创建IndexWriter对象 参数一:索引库位置 参数二:指定配置
IndexWriter indexWriter=new IndexWriter(FSDirectory.open(new File("E:\\Y2学习\\Lucene\\索引库\\Index").toPath()),
new IndexWriterConfig(new IKAnalyzer())); //定义一个删除条件,定义一个查询对象
Query query=new TermQuery(new Term("fieldName","全文检索"));
//删除
indexWriter.deleteDocuments(query); //关闭
indexWriter.close();
}

没有执行条件删除时一共15个文档

readIndex(全文检索)  搜索到俩个文档

执行条件删除后

Lucene索引维护(添加、修改、删除)的更多相关文章

  1. JavaWeb_day03_员工信息添加修改删除

    day03员工的添加,修改,删除 修改功能 思路 : 点击修改员工数据之后,跳转到单行文本,查询要修改的员工id的全部信息,主键id设置为readonly,其余的都可以修改, 修改之后,提交按钮,提交 ...

  2. Web 1三级联动 下拉框 2添加修改删除 弹框

    Web  三级联动 下拉框 using System; using System.Collections.Generic; using System.Linq; using System.Web; u ...

  3. 打通前后端全栈开发node+vue进阶【课程学习系统项目实战详细讲解】(3):用户添加/修改/删除 vue表格组件 vue分页组件

    第三章 建议学习时间8小时      总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章] 演示地址:后台:demo ...

  4. SpringBoot定时任务升级篇(动态添加修改删除定时任务)

    需求缘起:在发布了<Spring Boot定时任务升级篇>之后得到不少反馈,其中有一个反馈就是如何动态添加修改删除定时任务?那么我们一起看看具体怎么实现,先看下本节大纲: (1)思路说明: ...

  5. 【转】C#添加修改删除文件文件夹大全

    [转]C#添加修改删除文件文件夹大全 C#添加修改删除文件文件夹大全 StreamWriter sw = File.AppendText(Server.MapPath(".")+& ...

  6. lucene索引的更新和删除

    索引的删除: IndexReader和IndexWriter都由删除索引的功能,但这两者是有区别的, 使用IndexReader删除索引时,索引会马上被删除,其有两种方法,可以删除索引deleteDo ...

  7. Lucene——索引的创建、删除、修改

    package cn.tz.lucene; import java.io.File; import java.util.ArrayList; import java.util.List; import ...

  8. Oracle的学习二:表管理(数据类型、创建/修改表、添加/修改/删除数据、数据查询)

    1.Oracle表的管理 表名和列名的命名规则: 必须以字母开头: 长度不能超过30个字符: 不能使用oracle的保留字: 只能使用如下字符:A-Z, a-z, 0-9, $, # 等. Oracl ...

  9. oracle 表字段添加 修改 删除语法

    修改列名 alter table 表明 rename column rename 老列名 to 新列名添加 字段alter table 表名 add(字段名 类型):删除字段alter table 表 ...

随机推荐

  1. 【动手学pytorch】softmax回归

    一.什么是softmax? 有一个数组S,其元素为Si ,那么vi 的softmax值,就是该元素的指数与所有元素指数和的比值.具体公式表示为: softmax回归本质上也是一种对数据的估计 二.交叉 ...

  2. WTL Hello World

    构建最简单的WTL Hello World程序,基于:WTL91_5321_Final + VS2013 + WIN7 添加->新建项目 为了简单起见,我们删除一些button和对应的处理代码( ...

  3. A Simple Introduction To Computer Networking

    Most networking discussions are a jumble of acronyms. Forget the configuration details - what are th ...

  4. C++静态成员函数小结

    类中的静态成员真是个让人爱恨交加的特性.我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动.  静态类成员包括静态数据成员和静态函数成员两部分.  一 静态数据成员:  ...

  5. Exchange2010安装指南

    安装流程参考下面的: https://jingyan.baidu.com/article/2c8c281d6893680008252a9c.html 安装环境:windows server 2008( ...

  6. Java.work7 访问权限、对象使用作业20194651

    题目1: 在作业5的基础上,再创建一个柱体类,包含矩形对象.高和体积等三个成员变量,一个构造方法进行成员变量初始化,和计算体积.换底两个功能方法,在主类中输入长.宽.高,计算柱体体积,输入新的长.宽. ...

  7. Educational Codeforces Round 39 Editorial B(Euclid算法,连续-=与%=的效率)

    You have two variables a and b. Consider the following sequence of actions performed with these vari ...

  8. 配置 Docker 加速器

    Linux curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io ...

  9. [Python]random生成随机6位验证码

    #!/usr/bin/env pyhton # coding:utf-8 # @Time : 2020-02-16 10:07 # @Author : LeoShi # @Site : # @File ...

  10. 物理机安装ESXI6.7提示No Network Adapters的解决方案

    下载好ESXI6.7.iso镜像,写入U盘后,提示No Network Adapters,找不到网卡驱动. 解决办法:需要重新封装ESXI,将对应的网卡驱动嵌入进来. 1.先下载VMware-Powe ...