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(全文检索)  搜索到俩个文档

执行条件删除后

最新文章

  1. System.Security.SecurityException The source was not found, but some or all event logs could not be searched.Inaccessible logs Security.
  2. TOSHIBA TEC EXT Printer Z-Mode
  3. TreodeDB测试及总结
  4. IOS应用开发版本控制工具之Versions使用
  5. 4、JPA table主键生成策略(在JPA中table策略是首推!!!)
  6. 陈正冲老师讲c语言之const关键字
  7. GC与显式内存管理
  8. Linux下python升级
  9. oracle数据库导出并重新导入
  10. swift中JSon数据的处理
  11. io scheduler
  12. Log4j源码解析--Layout类解析
  13. linux执行jmeter脚本解决响应数据为空
  14. 深度学习实战-强化学习-九宫格 当前奖励值 = max(及时奖励 + 下一个位置的奖励值 * 奖励衰减)
  15. 浅谈spring中AOP以及spring中AOP的注解方式
  16. 从零开始学 Web 之 CSS3(七)多列布局,伸缩布局
  17. Elasticsearch安装部署(CentOS)
  18. 【转载】 从ACM会议看中国大陆计算机科学与国外的差距
  19. 28. 表单css样式定义格式
  20. 关于Activity的getReferrer():如何在Activity中获取调用者?

热门文章

  1. 程序为什么开头总是PUSH EBP
  2. 消息中间件面试题31道RabbitMQ+ActiveMQ+Kafka
  3. CLion在项目里编译不同文件
  4. 使用递归函数用来输出n个元素的所有子集(数据结构、算法与应用)
  5. wireshark抓包思维导图---新手推荐
  6. 12-Java-myeclipse集成Tomcat步骤及Tomcat的使用步骤
  7. Linux 邮件服务
  8. 设置允许外网访问MySQL
  9. 对CAN signal 的一点理解
  10. nCompass-网络流量基础知识