`
wbj0110
  • 浏览: 1602804 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论
阅读更多

利用 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 索引机制

    2. 索引匹配:Lucene通过遍历倒排索引,找到所有匹配查询的Term,并结合Posting List找出包含这些Term的文档。 3. 排序和评分:Lucene使用TF-IDF(词频-逆文档频率)和其他因素(如文档长度、查询词位置等)计算每...

    Lucene之删除索引

    Lucene的索引删除过程并不像传统的文件系统删除那么简单,它涉及到对倒排索引结构的修改。 1. **删除文档**:在Lucene中,删除操作并不是真正地从磁盘上移除文档,而是通过添加一个删除标记到索引中。当你调用`...

    基于lucene技术的增量索引

    Lucene首先需要理解的是它的核心概念,包括文档(Document)、字段(Field)、术语(Term)和倒排索引(Inverted Index)。每个文档由多个字段组成,字段内包含文本内容。Lucene通过分析这些文本,将其拆分为术语,...

    lucene索引结构原理

    4. **倒排索引(Inverted Index)**:这是Lucene的核心索引结构。每个词项在倒排索引中对应一个倒排列表(Posting List),记录了该词项在哪些文档中出现以及其在文档中的位置。倒排列表通常存储在磁盘上,以节省...

    lucene

    Lucene的核心在于其高效的倒排索引机制,通过这种机制可以实现快速的全文检索。 #### 二、倒排索引基本概念 在讨论Lucene的倒排文件索引结构之前,我们首先需要理解什么是倒排索引。传统的索引结构是将文档中的...

    Lucene.NET全文索引搜索Demo项目

    2. **倒排索引**:Lucene.NET采用倒排索引结构,其中每个词项都关联着包含该词项的文档列表,这样可以快速找到包含特定词的文档。 3. **评分与排序**:在查询时,Lucene.NET会根据查询词在文档中的出现频率、位置等...

    lucene索引查看工具及源码

    Luke 提供了诸如查看文档字段、搜索索引、查看倒排索引结构等功能,对于开发者来说是了解和调试 Lucene 索引的利器。 Luke 的源码也公开在 GitHub 上,这对于想深入理解 Lucene 内部机制的开发者来说是一个宝贵的...

    lucene 索引小示例

    在创建索引时,Lucene会对文档进行分词,生成一系列的关键词(也称为术语或Token),然后构建倒排索引。倒排索引是一种数据结构,它将每个关键词与包含该关键词的文档位置相关联,使得我们可以迅速找到包含特定词汇...

    lucene并行索引

    Lucene的核心是基于倒排索引(Inverted Index)的数据结构,这种结构非常适合于文档检索。倒排索引的基本思想是为每个文档中的每个词建立索引,并记录该词出现在哪些文档中及其位置信息。 - **倒排索引**:对于每个...

    lucene索引查看程序及代码

    Lucene的索引是一种倒排索引,它通过分析文档内容,将每个单词映射到包含该单词的文档集合,从而实现快速查找。然而,对于开发者来说,直接查看这些索引结构通常并不直观,这就需要专门的工具来帮助我们理解索引的...

    lucene索引简单介绍

    倒排索引允许Lucene在O(log n)的时间复杂度内完成搜索,极大地提高了效率。 3. **字段(Field)**:在Lucene中,文档由多个字段组成,每个字段都有特定的含义,如标题、内容等。字段可以设置不同的分析器,以适应...

    Lucene索引和查询

    这些词项构成了倒排索引(Inverted Index),这是一种数据结构,它允许我们快速找到包含特定词项的所有文档。具体步骤包括: - 分词(Tokenization):通过分词器(Tokenizer)将文本切分成词项。 - 词项处理(Term...

    Lucene读取索引文件

    .fdx和.fdt是Field Data Index和Data,用于处理字段的倒排索引;而.fdt则存储了实际的字段值。 阅读和解析Lucene索引文件通常需要借助于Lucene提供的API。首先,通过`Directory`接口打开索引目录,如`FSDirectory....

    Lucene建立索引

    倒排索引是Lucene实现搜索的核心机制,它允许快速查找包含特定关键词的文档。本工程旨在为初学者提供一个入门Lucene建立索引的实例,帮助理解并掌握这一技术。 **正文:** 1. **Lucene简介** - Lucene是一个高...

    Lucene-Inverted-Index:信息检索倒排索引作业

    总结,Lucene-Inverted-Index作业的完成需要对Lucene的倒排索引机制有深入理解,并能够熟练运用Java编程,结合Analyzer处理中文语料。通过实际操作,你将能够构建出一个功能完备的信息检索系统,为用户提供高效的...

    luke8用于查看lucene保存的索引库数据和文档数据

    这一过程包括分词、建立倒排索引、存储字段值等步骤。Lucene支持多种高级特性,如模糊搜索、短语搜索、评分机制等,使得搜索体验更加智能化。 **2. luke8的用途** luke8是Lucene的官方可视化工具,主要功能有: -...

    lucene检索文档、检索大数据量数据

    Lucene的核心原理是基于倒排索引,这种索引结构使得快速查询成为可能。 ### 1. 倒排索引原理 倒排索引是Lucene实现高效搜索的基础。在倒排索引中,每个唯一的词项(token)都会指向包含该词项的文档列表,而不是像...

    lucene索引结构原理.docx

    【Lucene 索引结构原理】 Lucene 是一个高性能、全文检索的开源...在Lucene中,这个过程包括分析文本、创建倒排索引等步骤,使得搜索操作从线性时间复杂度转变为对数时间复杂度,显著提高了大规模文本数据的检索速度。

Global site tag (gtag.js) - Google Analytics