lucene_indexWriter说明、索引库优化
IndexWriter
在Hibernate中。一般保持一个数据库就仅仅有一个SessionFactory。由于在SessionFactory中维护二级缓存,而SessionFactory又是线程安全的。所以SessionFactory是共享的。
假设同一时候在一个索引库中同一时候建立两个IndexWriter,比如:
IndexWriter indexWriter = new IndexWriter(LuceneUtils.directory,LuceneUtils.analyzer,MaxFieldLength.LIMITED);IndexWriter indexWriter2 = new IndexWriter(LuceneUtils.directory,LuceneUtils.analyzer,MaxFieldLength.LIMITED);
这种代码会出现异常
而lucene的文件夹结构:
![](/assets/blank.gif)
由于当一个IndexWriter在进行读索引库操作的时候,lucene会为索引库。以防止其它IndexWriter訪问索引库而导致数据不一致,直到IndexWriter关闭为止。
结论:同一个索引库仅仅能有一个IndexWriter进行操作。
public class LuceneIndexWriter {private static IndexWriter indexWriter = null;public static IndexWriter getIndexWriter() {if (indexWriter == null) {try {indexWriter = new IndexWriter(LuceneUtils.directory,LuceneUtils.analyzer, MaxFieldLength.LIMITED);} catch (CorruptIndexException e) {e.printStackTrace();} catch (LockObtainFailedException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}return indexWriter;}public static void close() {if (indexWriter != null) {try {indexWriter.close();} catch (CorruptIndexException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}} else {System.out.println("indexWriter为空。不能关闭!
"); } } }
注:这里用单例模式做比較好。
/*** 1、索引库的增、删、改是由indexWriter来操作的* 2、同一个时刻内。同一个索引库。仅仅能同意一个indexWriter操作* 3、当IndexWriter创建完毕以后。indexwriter所指向的索引库就被占据了,仅仅有当indexWriter.close时。才干释放锁的资源* 4、当一个新的indexWriter想拥有索引库时。原来的indexWriter必须释放锁* 5、仅仅要索引库中存在write.lock文件。说明上锁了* 6、indexWriter.close有两层含义:* * 关闭IO资源* * 释放锁* @author Administrator**/
public class IndexWriterTest {@Testpublic void testIndexWriter() throws Exception{IndexWriter indexWriter = new IndexWriter(LuceneUtils.directory,LuceneUtils.analyzer,MaxFieldLength.LIMITED);indexWriter.close();IndexWriter indexWriter2 = new IndexWriter(LuceneUtils.directory,LuceneUtils.analyzer,MaxFieldLength.LIMITED);}
}
索引库的优化
![](/assets/blank.gif)
![](/assets/blank.gif)
结论:假设添加、删除重复操作非常多次,就会造成文件大量添加。这样检索的速度也会下降。所以我们有必要去优化索引结构。使文件的结构发生改变从而提高效率。
手动合并文件
在indexWriter.close();前加上
indexWriter.optimize();
就可以
在运行完上述代码后,索引库的结构为:
![](/assets/blank.gif)
自己主动合并文件
当cfs文件的数量为3个时,这是会自己主动合并成一个文件。
假设没有设置数量,默认情况下为10;
转载于:https://www.cnblogs.com/blfshiye/p/5272222.html
lucene_indexWriter说明、索引库优化相关推荐
- mysql字段简索引_MySQL优化看这一篇就够了
本文概要 概述 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 ...
- leyou商城day7 构建商品索引库及查询
01.商品搜索:商品搜索思路分析 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bvaGMkTU-1657680854733)(assets/商品搜索过程.jpg)] ...
- MySQL索引性能优化
01.MySQL:性能优化方案 在应用开发的过程中,由于前期数据量少,开发人员编写的SQL语句或者数据库整体解决方案都更重视在功能上的实现,但是当应用系统正式上线后,随着生成数据量的急剧增长,很多SQ ...
- MySQL索引系列--索引的优化--LIKE模糊查询
原文网址:MySQL索引系列--索引的优化--LIKE模糊查询_IT利刃出鞘的博客-CSDN博客 简介 本文介绍MySQL的LIKE模糊查询索引的优化.主要是索引失效的解决方案. 索引 ...
- mysql索引与优化
2019独角兽企业重金招聘Python工程师标准>>> 第二章.索引与优化 1.选择索引的数据类型 MySQL支持很多数据类型,选择合适的数据类型存储数据对性能有很大的影响.通常来说 ...
- Mysql 索引优化分析_如何优化MySQL的性能?从索引方面优化案例分析
今天我们来讲讲如何优化MySQL的性能,主要从索引方面优化. 建表 //建表 CREATETABLEIFNOTEXISTSstaffs( idINTPRIMARYKEYAUTO_INCREMENT, ...
- lucene索引文件大小优化小结
lucene索引文件大小优化小结 1 数值数据类型索引优化 1.1 数值类型索引问题 lucene本质上是一个全文检索引擎而非传统的数据库系统,它基于倒排索引,非常适合处理文本,而处理数值类型却不是强 ...
- mysql查询索引like_mysql 索引与优化like查询
索引与优化like查询 1. like %keyword 索引失效,使用全表扫描.但可以通过翻转函数+like前模糊查询+建立翻转函数索引=走翻转函数索引,不走全表扫描. 2. like key ...
- mysql范围条件_MySQL 索引及优化实战(一)
mysql 随着系统用户量的不断增加,MySQL 索引的重要性不言而喻,对于后端工程师,只有在了解索引及其优化的规则,并应用于实际工作中后,才能不断的提升系统性能,开发出高性能.高并发和高可用的系统. ...
最新文章
- android控制wifi状态
- mac电脑 显示隐藏文件 取消显示隐藏文件
- 【译】Diving Into The Ethereum VM Part 2 — How I Learned To Start Worrying And Count The Storage Cost
- zookeper安装_ZooKeeper安装和配置
- 《走出软件作坊》读后感
- mysql-启动、关闭与重启
- 实现机器学习的循序渐进指南X——KMeans
- iOS App常用的宏
- isPostBack解释
- 【转】LaTeX 符号命令大全
- Mac修改文件名的颜色
- ZOJ 2706 Thermal Death of the Universe (线段树)
- Oracle11g-linux安装
- Linux学习推荐书籍
- 嵌入式消息队列artemis
- docker下安装kong和konga
- OpenBlock Desktop v2.3.1积木编程
- Spatial-Temporal Transformer Networks for Traffic Flow Forecasting
- Towards Spatio-Temporal Aware Traffic Time Series Forecasting
- 2021年茶艺师(中级)报名考试及茶艺师(中级)复审考试
热门文章
- 内蒙古大学计算机组成原理实验,内蒙古大学计算机组成原理期末练习0
- php 浏览器 打印控件,JavaScript_JavaScript 实现打印,打印预览,打印设置,WebBrowser是IE内置的浏览器控件 - phpStudy...
- java post webservice_[java.webservice] 如何通过HttpPost从服务器上获得一个sessionid
- docker项目部署 php_「Docker部署PHP+Vue项目」- 海风纷飞Blog
- ubuntu中安装sublime text3用于python编程
- 工业级以太网交换机-管理型
- 【渝粤题库】陕西师范大学400005 中国传统文化 作业(专升本)
- 【渝粤题库】陕西师范大学164204 供应链与物流管理 作业
- 【渝粤题库】广东开放大学 会展概论 形成性考核
- 【渝粤题库】广东开放大学 社会保障法 形成性考核