`
BuN_Ny
  • 浏览: 85467 次
  • 来自: 济南
社区版块
存档分类
最新评论

20) 第二章 索引:缓冲

 
阅读更多

 

Lucene在添加或删除文档时,并不会立即将这些操作写入磁盘,而是在内存中先做缓存。毋庸置疑,这是针对IO性能问题而作出的优良策略。

  在三种情况下,Lucene会对缓冲区进行flush操作:

  1. 缓存区内存空间已满

    通过IndexWriter的setRAMBufferSizeMB()设置缓冲区大小。默认为16.0MB。值得注意的是,内存大小的设定并非绝对精确,因而你不可以依赖此大小做程序设计。另外,不要将它设置超过2048MB!

  2. 文档数到达上限

    通过IndexWriter的setMaxBufferedDocs()设置最大文档数。默认情况下是没有这个限制的。

  3. 删除的Term数到达上限

    通过IndexWriter的setMaxBufferedDeleteTerms()设置最大删除Term数。默认情况下是没有这个限制的。

  如果你不需要这些设置,将他们设成IndexWriter.DISABLE_AUTO_FLUSH,不过你不可以同时将1、2两条设成DISABLE_AUTO_FLUSH.

  顺便一提,我们应该已经发现Lucene的IndexWriter构造器过于复杂,需要的参数让人觉得乱七八糟,参数的设置也是让人一头雾水。Lucene团队已经注意到这个问题了,新版的Lucene会将这些“乱七八糟”的东西都放在一个IndexWriterConfig类中,IndexWriter将仅仅需要一个IndexWriterConfig的实例进行构造。相应的,上面介绍的三种方法也会被移动到IndexWriterConfig中,IndexWriter.DISABLE_AUTO_FLUSH常量也由IndexWriterConfig.DISABLE_AUTO_FLUSH替代。

 

  最后说一下flush操作。该操作会在Directory中创建新的段(segment)和待删除文件(上一节说的那个“黑名单”)。然而,在执行commit()操作前,这些文件对于IndexReader是完全不可见的。flush操作是释放缓冲区的内存空间到index文件中,commit操作则是将所有的flush变动持久化并对IndexReader可见。

 

 

 

 

1
0
分享到:
评论

相关推荐

    数据结构严蔚敏版本第二章课件下载

    本资源提供了第二章的课件下载,主要涵盖了线性表这一重要的数据结构。 线性表是最基础的数据结构之一,它是由n(n>=0)个相同类型元素构成的有限序列。线性表在实际应用中极其广泛,是其他复杂数据结构的基础。在...

    零基础学算法C PPT第二章

    本资料“零基础学算法C PPT第二章”着重介绍了使用C语言进行算法学习的基础知识,特别是针对简单数据结构的探讨。 在C语言中,数据结构是组织和管理数据的一种方式,它涉及到如何存储、访问和操作数据。在第二章中...

    操作系统概念英文第六版课后题参考答案

    - **第二章 计算机系统结构**:探讨硬件架构对操作系统设计的影响,包括指令集架构、存储器层次等。 - **第三章 操作系统结构**:讨论操作系统的设计原则与体系结构,例如微内核、模块化等概念。 - **第四章 进程**...

    计算机图形学 第二章1 课件

    在本课件“计算机图形学 第二章1”中,我们聚焦于两个关键概念:坐标系转换和多边形表示,这些都是计算机生成逼真图像的基础。 首先,我们要理解坐标系在计算机图形学中的作用。在三维空间中,坐标系提供了定位和...

    Directx8中教程及源码.rar

    2. **第二章:绘制三角形** - 在3D图形中,三角形是最基本的图形元素。这一章将讲解如何使用Direct3D绘制单个和多个三角形,理解顶点坐标和颜色的概念。 3. **第三章:旋转的立方体** - 通过立方体的旋转,学习者...

    数据结构用C语言——唐策善

    第二章 线性表:线性表是最基础的数据结构之一,包括顺序表和链表。本章将讲解顺序表的动态存储分配、插入和删除操作,以及链表的单链表、双向链表和循环链表的构造与操作。 第三章 栈和队列:栈是一种后进先出...

    第二章 关系数据库.ppt

    【第二章 关系数据库】 关系数据库是数据库管理系统中的一种核心数据模型,由美国IBM公司的E.F.Codd在1970年提出。Codd不仅提出了关系数据模型,还后续发展了关系代数和关系演算的概念,并在1972年和1974年分别阐述...

    第二章 Oracle体系结构.ppt

    本章主要围绕这些方面展开详细讲解。 首先,Oracle的物理结构主要包括数据文件、日志文件、控制文件和配置文件。数据文件(.dbf)是存储数据库数据的核心,如表数据和索引数据。日志文件(Log*.dbf)记录所有数据库...

    Geodatabase实用教程(第一至第四章)

    第二章:数据模型与数据类型 1. 数据模型:包括要素类、表、关系类等,以及它们之间的关联方式。 2. 要素类:用于存储点、线、面等空间对象,可以包含属性数据和几何数据。 3. 属性数据:包括字段定义、数据类型(如...

    C#完全手冊

    #### 第二章:运行环境 - **.NET结构**:包括CLR、FCL和开发工具。 - **公用语言运行时环境**:执行管理代码,提供安全性、异常处理和垃圾回收等服务。 - **开发工具**:如Visual Studio,提供IDE和调试工具。 ###...

    数据结构 大公司笔试面试题

    2. **数组和广义表**(第5章):数组是一组相同类型的元素集合,可以通过索引快速访问,常用于实现矩阵运算和其他高效算法。广义表是一种更通用的数据结构,它可以包含不同类型的数据,支持嵌套和空项,是实现复杂...

    C和指针课后题答案

    #### 第二章:基本概念 - **知识点**: - 数据类型介绍。 - 变量声明与初始化。 - 控制结构(如条件语句和循环)。 #### 第三章:数据 - **知识点**: - 基本数据类型的详细解释。 - 数据存储与内存布局。 ...

    清华大学严蔚敏数据结构题集答案(c语言)

    8. **查找**(第9章):查找是指在数据集合中寻找特定元素,包括顺序查找、二分查找、哈希查找等。解答会涵盖各种查找算法的实现和性能分析。 9. **内部排序**(第10章):内部排序是指数据在内存中的排序,包括...

    清华大学严蔚敏数据结构题集与答案

    5. **树和二叉树**(第6章):树是一种非线性数据结构,广泛应用于文件系统、数据库索引等。二叉树是每个节点最多有两个子节点的特殊树,包括完全二叉树、满二叉树等。重点掌握树的遍历、查找、插入和删除算法。 6....

    计算机操作系统 汤晓丹版

    2. **第二章:进程管理** - 进程的概念:进程是程序的执行实例,包含程序、数据和进程控制块。 - 进程状态:新建、就绪、运行、等待和终止。 - 进程调度:FCFS(先来先服务)、SJF(短作业优先)、优先级调度、...

    严蔚敏《数据结构(C语言版)习题集》答案

    第二章 线性表: 线性表是最基础的数据结构之一,包括顺序表和链表两种实现方式。顺序表操作简便,但插入和删除效率较低;链表则在插入和删除上具有优势,但访问速度相对较慢。本章详细讲解了线性表的定义、操作及其...

Global site tag (gtag.js) - Google Analytics