在进行CRUD的时候请注意IndexWriterConfig的设置。
public class IndexCRUD {
private String ids[]={"","",""};
private String citys[]={"jining","suzhou","shanghai"};
private String desc[]={
"Qingdao is a beautiful city.",
"Nanjing is a city of culture.",
"Shanghai is a bustling city."
}; private Directory dir; private IndexWriter getWriter()throws Exception{
dir= FSDirectory.open(Paths.get(LuceneConstants.IndexDir01));
Analyzer analyzer=new StandardAnalyzer();
IndexWriterConfig config=new IndexWriterConfig(analyzer);
//config.setOpenMode(IndexWriterConfig.OpenMode.CREATE);//删除和修改的时候不能把OpenMode设为CREATE,否则会忽略term全部删除
IndexWriter indexWriter=new IndexWriter(dir,config);
return indexWriter;
}   //建立索引
public void createUpIndex() throws Exception{
IndexWriter indexWriter=getWriter(); for(int i=;i<ids.length;i++){
Document document=new Document();
document.add(new StringField("id",ids[i], Field.Store.YES));
document.add(new StringField("city",citys[i],Field.Store.YES));
document.add(new TextField("desc",desc[i],Field.Store.YES));
indexWriter.addDocument(document);
}
indexWriter.close();
}   //删除
public void deleteWithoutMerge()throws Exception {
IndexWriter writer = getWriter();
System.out.println("删除前:" + writer.numDocs());
writer.deleteDocuments(new Term("id", ""));// 强制删除此时删除的文档并不会被完全删除,而是存储在一个回收站中的,可以恢复
writer.commit(); //更改索引要提交,和提交数据库事务一个概念,真正的删除
System.out.println("writer.maxDoc():" + writer.maxDoc());
System.out.println("writer.numDocs():" + writer.numDocs());
writer.close();
} //删除后合并索引
public void DeleteWithMerge()throws Exception{
IndexWriter writer=getWriter();
System.out.println("删除前:"+writer.numDocs());
writer.deleteDocuments(new Term("id",""));// 强制删除此时删除的文档并不会被完全删除,而是存储在一个回收站中的,可以恢复
writer.forceMergeDeletes(); //强制合并删除的索引信息,索引量大的时候不推荐使用,真正的删除
writer.commit();
System.out.println("writer.maxDoc():"+writer.maxDoc());
System.out.println("writer.numDocs():"+writer.numDocs());
writer.close();
} public void update()throws Exception{
IndexWriter writer=getWriter();
Document doc=new Document();
doc.add(new StringField("id", "", Field.Store.YES));
doc.add(new StringField("city","qingdao",Field.Store.YES));
doc.add(new TextField("desc", "It's a dressed city.", Field.Store.YES));
writer.updateDocument(new Term("id",""), doc);
writer.close();
} public List<String> Search() throws Exception{
QueryParser queryParser=new QueryParser("desc",new StandardAnalyzer());
Query query=queryParser.parse("city"); if (null==dir) dir= FSDirectory.open(Paths.get(LuceneConstants.IndexDir01));
IndexReader reader=DirectoryReader.open(dir);
IndexSearcher searcher=new IndexSearcher(reader);
TopDocs topDocs=searcher.search(query,); List<String> list=new ArrayList<String>();
for (ScoreDoc scoreDoc:topDocs.scoreDocs) {
Document document = searcher.doc(scoreDoc.doc);
list.add(document.get("id")+document.get("city")+":"+document.get("desc"));
}
reader.close(); return list;
}
}

Lucene学习笔记2-Lucene的CRUD(V7.1)的更多相关文章

  1. Lucene学习笔记(更新)

    1.Lucene学习笔记 http://www.cnblogs.com/hanganglin/articles/3453415.html    

  2. MongoDB学习笔记:文档Crud Shell

    MongoDB学习笔记:文档Crud Shell   文档插入 一.插入语法 db.collection.insertOne() 将单个文档插入到集合中.db.collection.insertMan ...

  3. Lucene学习笔记1(V7.1)

    Lucene是一个搜索类库,solr.nutch和elasticsearch都是基于Lucene.个人感觉学习高级搜索引擎应用程序之前 有必要了解Lucene. 开发环境:idea maven spr ...

  4. Lucene学习笔记一

    Lucene课件 1.全文检索 1.1常见的全文检索 在window系统中,可以指定磁盘中的某一个位置来搜索你想要得到的东西.这个功能是windows比较常用的功能.在这个界面中能搜索的内容有*.*, ...

  5. Apache Lucene学习笔记

    Hadoop概述 Apache lucene: 全球第一个开源的全文检索引擎工具包 完整的查询引擎和搜索引擎 部分文本分析引擎 开发人员在此基础建立完整的全文检索引擎 以下为转载:http://www ...

  6. Lucene学习笔记

    师兄推荐我学习Lucene这门技术,用了两天时间,大概整理了一下相关知识点. 一.什么是Lucene Lucene即全文检索.全文检索是计算机程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明 ...

  7. Lucene学习笔记: 四,Lucene索引过程分析

    对于Lucene的索引过程,除了将词(Term)写入倒排表并最终写入Lucene的索引文件外,还包括分词(Analyzer)和合并段(merge segments)的过程,本次不包括这两部分,将在以后 ...

  8. Lucene学习笔记:基础

    Lucence是Apache的一个全文检索引擎工具包.可以将采集的数据存储到索引库中,然后在根据查询条件从索引库中取出结果.索引库可以存在内存中或者存在硬盘上. 本文主要是参考了这篇博客进行学习的,原 ...

  9. Lucene学习笔记: 五,Lucene搜索过程解析

    一.Lucene搜索过程总论 搜索的过程总的来说就是将词典及倒排表信息从索引中读出来,根据用户输入的查询语句合并倒排表,得到结果文档集并对文档进行打分的过程. 其可用如下图示: 总共包括以下几个过程: ...

随机推荐

  1. 如何用Python在豆瓣中获取自己喜欢的TOP N电影信息

    一.什么是 Python Python (蟒蛇)是一门简单易学. 优雅健壮. 功能强大. 面向对象的解释型脚本语言.具有 20+ 年发展历史, 成熟稳定. 具有丰富和强大的类库支持日常应用. 1989 ...

  2. 3.移植uboot-使板卡支持nor、nand

    在上一章,我们添加了nor,nand启动后,uboot启动出如下图所示: 上面的Flash: *** failed *** 是属于uboot第二阶段函数board_init_r()里的代码, 代码如下 ...

  3. 前端自动化(三) 合并压缩css、压缩js、添加时间戳、打包上线操作

    前端自动化(三)   合并压缩css.压缩js.添加时间戳.打包上线操作 此文在前两篇基础上对比参考,会很方便理解 gulp.task("delete",function(){ r ...

  4. css3实现梯形三角

    近期移动端项目中,图片很多 移动端尽量少图片,以便提升加载速度!这时候css3可以大放光芒比如梯形的背景图 --------------------------------- ------------ ...

  5. css半透明边框

    html <div class="parent"> <div class="translucent">I am Bob</div& ...

  6. webgl鱼眼算法

    在网页上面实现,采用的是球面映射和材质线性映射,这里注意的是用线性映射保留了球面的感觉,而不是采用sin映射,sin映射在边缘会产生很难看的效果. 最后效果如下:

  7. easyHOOK socket send recv

    代码比较简单,就不做注释了.  包含一个sockethookinject.DLL 和sockethook.exe 有一点不清楚, SetExclusiveACL可以添加当前线程的hook, 但是eas ...

  8. Windows AD域升级方

    前面的博客中我谈到了网络的基本概念和网络参考模型,今天我们来谈企业中常用的技术,Windows AD 域,今天我的笔记将重点讲解Windows AD 域的升级和迁移方法,通过3个小实验进行配置,真实环 ...

  9. Percona Toolkit 2.2.19 is now available

    New Features: 1221372: pt-online-schema-change now aborts with an error if the server is a slave, be ...

  10. Chris Richardson微服务翻译:微服务部署

    Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服务部署( ...