索引添加

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

添加代码

   @Test
//Field域索引添加
public void createDocument() throws IOException {
//创建IndexWriter对象 参数一:索引库位置 参数二:指定配置
IndexWriter indexWriter=new IndexWriter(FSDirectory.open(new File("D:\\Luene资料\\IndexD:\\Luene资料\\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();
}

  

效果:创建成功使用luke工具查看

索引修改

修改索引的原理:先删除后添加

修改代码

 /**
* 索引修改,修改fieldName域中关键词匹配到全文检索的文档
*/
public static void main(String[] args) throws IOException {
//创建IndexWriter对象 参数一:索引库位置 参数二:指定配置
IndexWriter indexWriter=new IndexWriter(FSDirectory.open(new File("D:\\Luene资料\\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();
}

  

效果:使用luke工具查看

索引删除

删除全部

 

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

  

效果: 

说明:将索引目录的索引信息全部删除,直接彻底删除,无法恢复。

根据域和关键词指定删除

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

最新文章

  1. Charles
  2. CSS的Display属性可能的值
  3. CSS基本知识0-命名规范
  4. NGUI Table页(UIToggle和UIToggledObjects)
  5. Git基本命令行操作 (转)
  6. 关于myeclipse中maven项目转换相关设置
  7. [开发笔记]-WindowsService服务程序开发
  8. h.264 mvp求解过程
  9. XJOI网上同步训练DAY2 T1
  10. Java面试题之数据库三范式是什么
  11. nefu 1116 字符串加密
  12. 【NO.1】Jmeter-安装JDK- 配置Jmeter运行的环境 - 是使用Jmeter的前提
  13. python 库之lxml安装 坑一个
  14. Linux vi/vim编辑器
  15. 从git中删除 .idea 目录
  16. python3 - 默认参数为列表
  17. 『计算机视觉』感受野和anchor
  18. Asterisk1.8 转码策略分析
  19. github/gitlab添加多个ssh key
  20. nltk30_Investigating bias with NLTK

热门文章

  1. 靶机-BTRSys 2.1 Walkthrough
  2. sqli_labs学习笔记(一)Less-38~Less-53
  3. Visual studio 2015 与 mysql 连接
  4. 用VLC搭建流媒体服务器
  5. swagger基本使用指南
  6. HTTPS 详解一:附带最精美详尽的 HTTPS 原理图
  7. python 利用selenium爬取百度文库的word文章
  8. SSH(一)
  9. ros之发布者和订阅者协同工作
  10. 如何优雅的将Mybatis日志中的Preparing与Parameters转换为可执行SQL