`
sunasheng
  • 浏览: 123375 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

提高lucene建立索引的效率(大数据量时)

阅读更多

第一种方式:IndexWriter类中关系到索引创建效率的几个方法

一、SetMergeFactor(合并因子)
SetMergeFactor是控制segment合并频率的,其决定了一个索引块中包括多少个文档,当硬盘上的索引块达到多少时,
将它们合并成一个较大的索引块。当MergeFactor值较大时,生成索引的速度较快。
MergeFactor的默认值是10,建议在建立索引前将其设置的大一些。

二、SetMaxBufferedDocs(最大缓存文档数)
SetMaxBufferedDocs是控制写入一个新的segment前内存中保存的document的数目,
设置较大的数目可以加快建索引速度,默认为10。

三、SetMaxMergeDocs(最大合并文档数)
SetMaxMergeDocs是控制一个segment中可以保存的最大document数目,值较小有利于追加索引的速度,
默认Integer.MAX_VALUE,无需修改。

在创建大量数据的索引时,我们会发现索引过程的瓶颈在于大量的磁盘操作,如果内存足够大的话,
我们应当尽量使用内存,而非硬盘。可以通过SetMaxBufferedDocs来调整,增大Lucene使用内存的次数。

如果内存足够大的话,我们也可以在索引过程中完全避免使用硬盘。Lucene支持使用文件系统和内存两种方式创建索引,
我们可以先把索引写入到RAMDirectory,达到一定数量时再批量写进FSDirectory,减少磁盘操作次数。相关的代码如下:
RAMDirectory rmd = new RAMDirectory();
IndexWriter writer = new IndexWriter(rmd, new StandardAnalyzer(), true);
while (not eof)         //遍历
{
Document doc = new Document();
doc.Add(…);  //Add Fields
writer.AddDocument(doc);
}
writer.SetUseCompoundFile(true);
writer.Optimize();
writer.Close();
另外,SetUseCompoundFile这个方法可以使Lucene在创建索引库时,会合并多个 Segments 文件到一个 .cfs 中。
此方式有助于减少索引文件数量,对于将来搜索的效率有较大影响。

分享到:
评论

相关推荐

    lucene 对 xml建立索引

    ### Lucene对XML文档建立索引的技术解析与实践 #### 一、引言 随着互联网技术的迅猛发展,非结构化数据(如...在未来的发展中,随着数据量的不断增加和技术的进步,Lucene对XML文档的索引建立将会更加高效和智能化。

    lucene索引结构原理.docx

    - **顺序扫描法**:逐个检查文件,查找包含特定字符串的内容,效率低,适用于小数据量。 - **全文检索**:首先对非结构化数据建立索引,然后搜索索引来快速定位所需内容。这是Lucene的核心机制,通过索引提升搜索...

    最简单的Lucene建立、搜索索引的方法

    **建立索引的步骤** 1. **添加依赖**:在MyEclipse10中,首先需要导入Lucene相关的jar包,这些通常包括lucene-core、lucene-analyzers、lucene-queryparser等,确保所有必要的组件都已引入。 2. **创建索引目录**...

    基于lucene技术的增量索引

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

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

    **luke8:深入洞察Lucene索引库的利器** Lucene是一款强大的开源全文检索库,广泛应用于各种搜索引擎和信息检索系统中。...在处理大量文本数据时,luke8的使用无疑会提高我们的工作效率,并为我们提供宝贵的洞察力。

    lucene并行索引

    针对Lucene在处理大量数据时效率低下的问题,分布式并行索引技术提供了一种有效的解决方案。 - **内存缓冲机制**:通过将临时索引数据存储在内存中而不是磁盘上,可以显著提高索引构建的速度。这是因为内存访问速度...

    Lucene.net建立索引,检索分页Demo

    **Lucene.net 知识点详解** Lucene.net 是 Apache Lucene 的 .NET 版本,...以上就是关于 Lucene.net 建立索引、检索及分页的关键知识点。理解并熟练运用这些概念,可以帮助开发者构建高效、灵活的全文搜索解决方案。

    Lucene索引数据分析器

    这种可视化方式对于数据分析和问题排查非常有帮助,尤其在处理大量数据时,能够提高工作效率。 在实际开发中,结合如Excel或数据可视化库(如Python的Pandas或JavaScript的D3.js),开发者可以创建交互式报告,...

    用LUCENE连击MYSQL建立索引并搜索的JAVA代码。

    创建好`Document`后,将其添加到`IndexWriter`,这样Lucene就会为这些字段建立索引。 当索引构建完成后,我们就可以实现搜索功能了。首先,创建一个`DirectoryReader`来读取已经建立的索引,然后使用`IndexSearcher...

    深入 Lucene 索引机制深入 Lucene 索引机制

    通过建立倒排索引,Lucene能够在大量数据中快速找到匹配的文档,使得全文检索变得简单且高效。对于Java开发者而言,集成Lucene能极大地提升应用程序的搜索功能,使其在处理文本数据时具备强大的处理能力。了解并掌握...

    基于Lucene索引的分析与实现

    在当今信息爆炸的时代,互联网上的数据量呈指数级增长,人们对于高效检索信息的需求日益强烈。Lucene,作为一个强大的Java全文检索库,提供了便捷的索引和搜索功能,为解决海量数据的检索难题提供了有效的解决方案。...

    基于Lucene的分布式并行索引.pdf

    随着大数据时代的到来,数据量呈爆炸式增长,如何快速有效地对这些数据进行索引成为了众多应用面临的一大挑战。这项技术能够在保证索引质量的前提下,大幅度提升索引速度,对搜索引擎、数据仓库、内容管理系统等多个...

    lucene索引

    1. **性能优化**:当索引数据量很大时,可能需要考虑如何优化索引构建速度和查询效率,例如调整索引段的数量、使用多线程构建索引等。 2. **搜索精度**:有时候,用户输入的查询词可能与索引中的词语不完全匹配,...

    基于Lucene的搜索策略研究

    - **索引建立**:Lucene首先将输入的文档转换为一系列的词条,并为每个词条建立索引。此过程中,文档会被分词、去噪、标准化等处理,以提高搜索效率和准确性。索引建立过程是耗时的,尤其是对于大规模的数据集来说,...

    lucene、lucene.NET详细使用与优化详解

    lucene 的主要任务是处理文本数据,通过对输入的字符串进行分析,将其拆分成有意义的词语(tokens),并建立索引。这个过程包含了分词、去除停用词等预处理步骤,以提升搜索效率和准确性。通过lucene,你可以快速地...

    lucene与sqlserver数据库实现索引的简单实例

    1. **数据抽取**:首先,我们需要从SQL Server数据库中获取需要建立索引的数据。这通常通过JDBC(Java Database Connectivity)驱动实现,编写Java代码连接数据库并执行查询,获取所需字段。 2. **预处理**:数据...

    Lucene5学习之多线程创建索引

    在处理大量数据时,单线程创建索引可能会成为性能瓶颈,因此引入多线程技术可以显著提高效率。本文将重点探讨如何在Lucene5中利用多线程来加速索引构建。 在Lucene中,`IndexWriter`是用于创建和修改索引的主要类。...

    Lucene组件

    在本文中,我们将深入探讨Lucene组件及其在提高检索效率方面的应用。 **1. Lucene组件介绍** 1. **Analyzer**: 分析器是Lucene中处理文本的关键组件,负责将输入的字符串分解为可搜索的术语(tokens)。不同的分析...

Global site tag (gtag.js) - Google Analytics