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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • webStorm快捷键整理「建议收藏」

    webStorm快捷键整理「建议收藏」一些自己会用的webstorm快捷键,持续更新

    2022年6月23日
    32
  • MAC 更新SVN到1.8

    MAC 更新SVN到1.8

    2022年2月5日
    47
  • mac视频录制工具推荐[通俗易懂]

    mac视频录制工具推荐[通俗易懂]AVAideScreenRecorderforMac是一款mac视频录制工具,可帮助用户可以选择录制整个屏幕或自定义区域,支持声音的同步录制,以1080p等高清质量以高达60fps的速度录制屏幕活动、视频和游戏。它可以让您以无损质量处理所有屏幕录制任务,包括Zoom会议、视频通话、文件、在线课程等。除了屏幕捕获之外,我们的屏幕录像机还可以作为一个令人难以置信的音频和声音和录音机,将您的录音提升到一个新的水平。任何希望为音乐制作、音频笔记或其他任何东西创建专业品质音频的人都可

    2022年6月17日
    35
  • webpack(2)webpack核心概念「建议收藏」

    webpack(2)webpack核心概念「建议收藏」前言本质上,webpack是一个用于现代JavaScript应用程序的静态模块打包工具。当webpack处理应用程序时,它会在内部构建一个依赖图(dependencygraph),此

    2022年7月31日
    3
  • gtp6 linux 启动_glibc.i686安装

    gtp6 linux 启动_glibc.i686安装$dbca//无法启动dbca,提示错误如下:/opt/oracle/jre/1.1.8/bin/../lib/i686/green_threads/libzip.so:symbolerrno,versionGLIBC_2.0not……二、系统安装详细步骤1.上电/开机,按F2/Del进入BIOSSetup界面,…glibctftp、telnet…

    2022年6月7日
    175
  • Aegis 简介_aegisthus

    Aegis 简介_aegisthus是一个数据绑定API,用于在Java对象与XML文档之间执行映射。使用Aegis的好处:Aegis使用外部映射文件为开发人员提供更多的控制权和灵活性,使他们能够根据其项目需要来定制映射。A

    2022年8月2日
    11

发表回复

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

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