IndexReader已解决的问题

IndexReader已解决的问题

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

设计和实时搜索的发展,IndexReader饮酒数成为0当调用doClose,和SegmentReader再有一个addCoreClosedListener控制的方法SegmentCoreReaders当操作接近。搜索Lucene该代码只有在FieldCacheImpl见电话,的回调>是让SegmentCoreReaders关闭之后从field cache中删除field cache。

查看Lucene core 4.0的代码,使用的FieldCache仅仅有Field Comparator,FieldCacheRangeFilter,FieldValueFilter等,看起来假设全然基于docvalues做排序和filter,不须要考虑。

另外假设考虑的话,filed cache基于docId,所以内存索引快照并不须要每一个都相应一个field cache,仅仅要映射到最新的field cache就可以,仅仅要读取时不逾越max doc id就可以。因此RamIndexReader.getCoreCacheKey返回相应RamIndexWriter就可以。

另外,SegmentCoreReaders的关闭文件句柄操作时IOUtils.close(termVectorsLocal, fieldsReaderLocal,…)。
实时搜索时每一个IndexSearcher都须要关闭其Reader的,这样在反复打开时不会有遗漏的文件句柄。

要真正释放资源,应该在new新的实时搜索searcher时不操作(new时自己主动有一个引用计数了),在searcher替换时调用旧Reader的decRef方法。
搜索前调用一次incRef,搜索完毕调用一次decRef。

详细到内存索引Reader,其doClose能够什么都不做。

RealTimeIndexWriter的close,分别调用RamIndexWriter的close方法,SegmentReaderAndLiveDocs的close方法。SegmentReaderAndLiveDocs内部有一个实时的SegmentReader,它也要Close。

每次快照生成的SegmentReader共用一个core。

ConcreateCompositeReader incRef和decRef时应该对以下的全部AtomicReader操作。

这样的手动的incRef,decRef笨方法,和easy错误,假设Java7可以直接使用AutoClosable.

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117466.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux查看nfs端口命令,LinuxNFS端口命令是什么? 爱问知识人

    linux查看nfs端口命令,LinuxNFS端口命令是什么? 爱问知识人在Linux系统中,我们也会常遇到NFS的设置。针对这方面,我们这次主要讲解一下LinuxNFS的端口配置。看看如何设置可以调节好防火墙和端口的设置。#LinuxNFS服务固定端口及防火墙配置#1。在LINUX上正常安装NFS服务2。修改/etc/service,添加以下内容(端口号必须在1024以下,且未被占用)#Localservicesmountd1011/tcp#rpc。mount…

    2022年6月27日
    50
  • startActivityForResult的坑

    startActivityForResult的坑android中经常会遇到从当前的Activity跳转到另外一个Activity的情况,通常情况下我们会直接选择用startActivity或者startActivityForResult。如果你对这两个方法还不知道的话可以去https://www.cnblogs.com/fuck1/p/5456337.html看看。本文不会告诉你怎么使用这个方法,而是会说说笔者自己遇到的问题以及解决办法。事情…

    2022年7月11日
    17
  • php随机数生成漏洞函数,php随机数生成函数[通俗易懂]

    php随机数生成漏洞函数,php随机数生成函数[通俗易懂]functionrandpw($len=8,$format=’ALL’){$is_abc=$is_numer=0;$password=$tmp=”;switch($format){case’ALL’:$chars=’ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789′;break;case’CHAR’:…

    2025年6月10日
    1
  • matlab创建数组的方法_创建数组的三种方法

    matlab创建数组的方法_创建数组的三种方法1直接方法:       A=[1,2,3;4,5,6];2冒号方法:      B=x:inc:b;3定数线性采样法:x=linspace(-1,1,10);4中等规模数组的数组编辑器创建法:在工作空间中右键创建一个名为“unnamed”的变量,双击,在里面输入数据,修改变量名   为“ABC”,运行“save ABC ABC”。将数组AB…

    2022年5月3日
    276
  • 记一道USB流量分析CTF题

    记一道USB流量分析CTF题USB流量分析

    2022年5月20日
    43
  • Android布局详解:FrameLayout[通俗易懂]

    Android布局详解:FrameLayout[通俗易懂]后来也一直没有再回头看,再后来,看到评论多是负面的,也就心懒了,这个系列就没再写下去了。今天重新把文章修改一下。完全没有错不敢说,只是把当年漏写的一些内容再补进去吧。评论不删不改,大家自己看吧。我写的文章,基本都是面向新手的,所以没有很多高深的玩法(我自己也不擅长啦,我也不是高手)。所以新手看我的文章,入门即可,高深的内容不在我这里,我的庙小,装不下大神。再版修正说明:首先

    2022年6月2日
    80

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号