`
jayghost
  • 浏览: 440208 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

【转】深入 Lucene 索引机制

 
阅读更多

转自:http://lianj-lee.iteye.com/blog/463016

 

转载自IBM developmentWorks 
原文地址:http://www.ibm.com/developerworks/cn/java/wa-lucene/ 
一.提高索引性能 

利用 Lucene,在创建索引的工程中你可以充分利用机器的硬件资源来提高索引的效率。当你需要索引大量的文件时,你会注意到索引过程的瓶颈是在往磁盘上写索引文件的过程中。为了解决这个问题, Lucene 在内存中持有一块缓冲区。但我们如何控制 Lucene 的缓冲区呢?幸运的是,Lucene 的类 IndexWriter 提供了三个参数用来调整缓冲区的大小以及往磁盘上写索引文件的频率。 

1.合并因子(mergeFactor) 

这个参数决定了在 Lucene 的一个索引块中可以存放多少文档以及把磁盘上的索引块合并成一个大的索引块的频率。比如,如果合并因子的值是 10,那么当内存中的文档数达到 10 的时候所有的文档都必须写到磁盘上的一个新的索引块中。并且,如果磁盘上的索引块的隔数达到 10 的话,这 10 个索引块会被合并成一个新的索引块。这个参数的默认值是 10,如果需要索引的文档数非常多的话这个值将是非常不合适的。对批处理的索引来讲,为这个参数赋一个比较大的值会得到比较好的索引效果。 

2.最小合并文档数 

这个参数也会影响索引的性能。它决定了内存中的文档数至少达到多少才能将它们写回磁盘。这个参数的默认值是10,如果你有足够的内存,那么将这个值尽量设的比较大一些将会显著的提高索引性能。 

3.最大合并文档数 

这个参数决定了一个索引块中的最大的文档数。它的默认值是 Integer.MAX_VALUE,将这个参数设置为比较大的值可以提高索引效率和检索速度,由于该参数的默认值是整型的最大值,所以我们一般不需要改动这个参数。 

二.Lucene 索引文件结构分析 

在分析 Lucene 的索引文件结构之前,我们先要理解反向索引(Inverted index)这个概念,反向索引是一种以索引项为中心来组织文档的方式,每个索引项指向一个文档序列,这个序列中的文档都包含该索引项。相反,在正向索引中,文档占据了中心的位置,每个文档指向了一个它所包含的索引项的序列。你可以利用反向索引轻松的找到那些文档包含了特定的索引项。Lucene正是使用了反向索引作为其基本的索引结构。 

索引文件的逻辑视图 

在Lucene 中有索引块的概念,每个索引块包含了一定数目的文档。我们能够对单独的索引块进行检索。图 显示了 Lucene 索引结构的逻辑视图。索引块的个数由索引的文档的总数以及每个索引块所能包含的最大文档数来决定。 
 
Lucene 中的关键索引文件 

下面的部分将会分析Lucene中的主要的索引文件,可能分析有些索引文件的时候没有包含文件的所有的字段,但不会影响到对索引文件的理解。 

1.索引块文件 

这个文件包含了索引中的索引块信息,这个文件包含了每个索引块的名字以及大小等信息。下表显示了这个文件的结构信息。 
 

2.域信息文件 

我们知道,索引中的文档由一个或者多个域组成,这个文件包含了每个索引块中的域的信息。下表显示了这个文件的结构。 
 

3.索引项信息文件 

这是索引文件里面最核心的一个文件,它存储了所有的索引项的值以及相关信息,并且以索引项来排序。下表显示了这个文件的结构。 
 

4.频率文件 

这个文件包含了包含索引项的文档的列表,以及索引项在每个文档中出现的频率信息。如果Lucene在索引项信息文件中发现有索引项和搜索词相匹配。那么 Lucene 就会在频率文件中找有哪些文件包含了该索引项。表5显示了这个文件的一个大致的结构,并没有包含这个文件的所有字段。 
 

5.位置文件 

这个文件包含了索引项在每个文档中出现的位置信息,你可以利用这些信息来参与对索引结果的排序。表 6 显示了这个文件的结构 
 

分享到:
评论

相关推荐

    深入 Lucene 索引机制

    以下是对Lucene索引机制的详细解析: 一、Lucene的索引过程 1. 文档分析:当向Lucene添加文档时,首先会经过一个分词器(Tokenizer),将文本拆分成一系列的词项(Token)。接着,这些词项会被过滤(Filter)和...

    lucene索引查看工具及源码

    Luke 的源码也公开在 GitHub 上,这对于想深入理解 Lucene 内部机制的开发者来说是一个宝贵的资源。通过阅读和学习 Luke 的源码,我们可以了解到如何与 Lucene 索引进行交互,以及索引结构是如何组织和存储的。 在...

    lucene索引查看程序及代码

    《深入理解Lucene索引查看程序与代码》 在信息技术领域,搜索引擎的高效运作离不开底层索引技术的支持,而Lucene作为...通过深入学习和使用luke,我们可以更好地掌握Lucene的索引机制,进而优化我们的全文检索应用。

    lucene 索引小示例

    《Lucene索引小示例解析》 Lucene是一个高性能、全文检索库,它由Apache软件基金会开发并维护。在Java编程环境中,Lucene被广泛应用于构建搜索功能,特别是对于大量文本数据的高效检索。本篇文章将通过一个简单的小...

    Lucene读取索引文件

    一个Lucene索引是由多个文件组成的,包括但不限于 segments文件、.del文件(删除文档标记)、.tii和.tis文件(Term Info Index和Term Info postings)、.frx、.fdx、.fdt、.fdt(Field Data)等。这些文件共同构成了...

    很好的lucene索引查看工具,欢迎各位lucene研究者前来下载

    对于那些深入研究Lucene的学者和开发者而言,能够有效地查看和理解Lucene索引至关重要。本文将详细介绍一款被称为“很好的lucene索引查看工具”的实用软件,旨在帮助用户更好地理解和调试Lucene索引。 Lucene索引...

    lucene索引结构原理.docx

    而在Lucene中,基本单位是Document,它同样由多个字段组成,但Lucene索引的是这些字段的内容,以加速文本检索。 - **索引构建**:Lucene支持增量索引和批量索引,可以处理数据源的小幅变化或大规模数据。数据库通常...

    基于lucene技术的增量索引

    本文将深入探讨如何利用Lucene实现增量索引,这是一种在数据库或文件系统更新时仅对新数据或变化数据进行索引的技术,以降低资源消耗并保持搜索性能。 **1. Lucene基础知识** Lucene首先需要理解的是它的核心概念,...

    lucene并行索引

    ### Lucene并行索引关键技术解析 #### 一、引言 随着互联网的快速发展,海量信息的管理和检索成为了重要的挑战。传统的单机索引方法已无法满足高效处理大规模数据的需求,尤其是在搜索引擎领域。Lucene作为一款...

    如何将Lucene索引写入Hadoop?

    标题 "如何将Lucene索引写入Hadoop" 指涉的是在大数据处理场景下,如何利用Apache Lucene的全文检索功能与Apache Hadoop的分布式计算能力相结合,实现高效的数据检索。Apache Lucene是一个高性能、全文本搜索库,而...

    Lucene之删除索引

    在深入探讨Lucene删除索引这一主题之前,我们先...总之,Lucene的删除索引机制是一个复杂但高效的过程,涉及到了位向量、段管理和索引优化等多个环节。在实际应用中,合理使用这些功能可以确保索引的准确性和资源效率。

    lucene索引简单介绍

    在本文中,我们将深入探讨Lucene的索引机制,理解其核心概念以及如何创建和使用索引。 首先,我们需要了解什么是索引。在信息检索领域,索引就像书籍的目录,它提供了快速定位数据的能力。Lucene的索引过程将原始...

    Lucene索引文件格式

    本文将深入解析Lucene 1.3版本的索引文件结构,帮助读者理解其内部运作机制。 首先,我们要理解Lucene索引的基本概念。索引是由文档(document)、域(field)和项(term)构成的层次结构。文档是由一系列域组成的...

    LUCENE索引搜索数据库技术汇总

    **LUCENE索引搜索数据库技术汇总** Lucene是一个高性能、全文检索库,它是Apache软件基金会的顶级项目,被广泛应用于各种搜索引擎的开发。在学习和应用Lucene的过程中,掌握其核心概念和技术至关重要。以下是对...

    lucene-索引(index).pdf

    标题与描述概述的知识点主要围绕着Lucene索引的核心概念,包括索引的基本定义、反向索引(倒排索引)的工作原理以及Lucene如何实现其独特的索引文件格式。下面将对这些知识点进行详细阐述。 ### 索引概念 索引是一...

    lucene索引

    本文将深入探讨Lucene索引的工作原理和核心概念,特别是针对中文词汇处理的部分。 首先,Lucene的核心在于它的索引机制。索引是一个预处理步骤,它将原始文档转化为一种结构,使得快速的全文搜索成为可能。这个过程...

    lucene 索引工具源码(桌面版)

    总之,这个“lucene 索引工具源码(桌面版)”为开发者提供了一个实践 Lucene 技术的绝佳平台,无论是学习 Lucene 的基本概念,还是深入了解其内部机制,都能从中受益匪浅。同时,配合《lucene 类似百度搜索》的学习...

    lucene索引的简单使用

    创建Lucene索引主要包括以下几个步骤: 1. **创建Analyzer**:Analyzer负责分词,即将输入的文本拆分成一个个有意义的词语。根据语言特性,可以选择不同的Analyzer,如StandardAnalyzer(默认)适用于英文,...

    Lucene索引管理器(基于Luke修改而来)

    而Luke是一款用于查看和分析Lucene索引的工具,它允许开发者深入理解索引结构和内容,从而更好地优化搜索性能。这个“基于Luke修改而来”的索引管理器,可能是对原版Luke进行了一些定制或增强,以满足特定需求。 1....

Global site tag (gtag.js) - Google Analytics