`
lcywjvb
  • 浏览: 60875 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

针对于lucene使用和优化

阅读更多
索引的优化技术大概有三种:
       一是通过调整mergeFactor、maxMergeDocs和minMergeDocs参数的值来达到索引优化的目的。其中,mergeFactor是控制片段合并的频度和大小,maxMergeDocs是每片段文档数的上限,minMergeDocs是控制索引过程中可用RAM的数量。结合机器的内存情况,合理地配置这三个参数,能达到最优的效果。
       二是组合使用RAMDirectory和FSDirectory。使用以上两者时会发现它们都有各自的长短处,例如,RAMDirectory具有较高的存储速度,但它受到实际内存的限制;FSDirectory不受实际内存的限制,但因为要读写文件,所以速度是它的瓶颈。组合使用RAMDirectory和FSDirectory,能很好地解决速度和内存空间的矛盾问题,从而达到优化目的。具体做法是先把doc存到RAMDirectory里,等到RAMDirectory里doc数量达到某个限度时,再把这些doc一次性地写到FSDirectory里。这里RAMDirctory起到一个缓冲的作用。
       三是使用多索引器。通过使用多线程技术来实现并行程序设计,这样能提高建立索引的速度,但由于技术的复杂性和易错性,所以这种技术要求有很高的编程能力。


检索的优化技术:
Lucene支持内存索引:这样的搜索比基于文件的I/O有数量级的速度提升。而尽可能减少IndexSearcher的创建和对搜索结果的前台的缓存也是必要的。
Lucene面向全文检索的优化在于首次索引检索后,并不把所有的记录(Document)具体内容读取出来,而起只将所有结果中匹配度最高的头100条结果(TopDocs)的ID放到结果集缓存中并返回,这里可以比较一下数据库检索:如果是一个10,000条的数据库检索结果集,数据库是一定要把所有记录内容都取得以后再开始返回给应用结果集的。所以即使检索匹配总数很多,Lucene的结果集占用的内存空间也不会很多。对于一般的模糊检索应用是用不到这么多的结果的,头100条已经可以满足90%以上的检索需求。
如果首批缓存结果数用完后还要读取更后面的结果时Searcher会再次检索并生成一个上次的搜索缓存数大1倍的缓存,并再重新向后抓取。所以如果构造一个Searcher去查1-120条结果,Searcher其实是进行了2次搜索过程:头100条取完后,缓存结果用完,Searcher重新检索再构造一个200条的结果缓存,依此类推,400条缓存,800条缓存。由于每次Searcher对象消失后,这些缓存也访问那不到了,你有可能想将结果记录缓存下来,缓存数尽量保证在100以下以充分利用首次的结果缓存,不让Lucene浪费多次检索,而且可以分级进行结果缓存。



转自:http://hi.baidu.com/lewutian/blog/item/48a86d03de58b984d43f7c1b.html


优化检索速度:http://blog.163.com/lewutian@126/blog/static/163824796201041131626170/


总结
优化检索优化:
1 lucene的版本是不是最新的
2 使用转速快的硬件设备(磁盘寻道时间比平常的硬盘要快)
3 加大jvm内存
4 唯一的IndexSearch实例(IndexSearch支持多线程)
5 尽量避免重新构造IndexSearcher对象(减少对系统的消耗)
6 optimize方法只在需要的时候调用(合并索引)
7 尽量重用filed对象
8 减少filed对象的存储,只存储必要的数据
9 如果索引不是需要经常优化,要减小MergeFactor合并因子的值
10 在返回结果的时候使用filedselect选择器,只返回需要的filed对象
11 返回的hits长度只要满足需求即可
12 使用模糊查询的时候尽量减少term的长度(。prefixLength在QueryParser以及FuzzyQuery中可以设置。默认值为0,将比较所有的Term)
13 如果要过滤一些关键字 要尽量使用filter
分享到:
评论

相关推荐

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

    lucene 是一个广泛使用的全文搜索引擎库,其.NET版本称为lucene.NET,它提供了强大的文本检索和分析能力,适用于各种场景下的全文搜索需求。lucene 并非一个可以直接使用的成品应用,而是作为一个框架,需要开发者...

    lucene分组查询优化facet

    在搜索引擎和大数据分析领域,Apache Lucene 是一个广泛使用的全文检索库,它提供了高效、可扩展的搜索功能。其中,Facet(分面)查询是Lucene提供的一种强大的分类和统计功能,它允许用户根据特定的维度(如作者、...

    Lucene 索引的简单使用

    本篇文章将详细阐述如何使用Lucene来创建和查询索引,帮助你深入理解其核心概念和操作流程。 ### 1. Lucene基本概念 - **文档(Document)**:在Lucene中,一个文档代表你要索引的信息单元,它可以包含多个字段...

    依赖Lucene的电话号码查询优化

    综上所述,依赖Lucene进行电话号码查询优化,关键在于理解电话号码的特性并针对性地定制查询解析器和分析器,同时结合索引优化和缓存策略,以达到高效、准确的查询效果。在实际开发过程中,还需要根据具体应用场景和...

    使用Lucene.net进行全文搜索

    本文将深入探讨如何使用Lucene.NET进行全文搜索,特别是针对多关键字匹配的场景。 首先,我们需要了解Lucene.NET的基本概念。Lucene是一个开源的文本搜索库,它的核心功能包括文档索引、搜索和排序。Lucene.NET是这...

    lucene4.7所需jar包

    6. **IKAnalyzer2012FF.jar**:IK分词器的实现,针对Lucene进行了优化。 为了在项目中使用这些jar包,开发者需要按照以下步骤操作: 1. 将所有必要的jar文件添加到项目的类路径中,这可以通过IDE的配置或者构建...

    开发自己的搜索引擎 lucene + heritrix

    理解Lucene和Heritrix的工作原理和使用方法,以及如何将两者结合构建有效的搜索引擎,对于完成这项工作至关重要。同时,针对垂直领域的深入理解与合理设计也是构建出有商业价值的搜索引擎的重要前提。

    lucene整理文档,lucene详细描述,安装使用过程。

    此外,社区还开发了针对 Lucene 的许多扩展,如中文分词器、地理位置搜索等。 **总结** Lucene 是一个强大的全文搜索引擎,它的灵活性和可扩展性使得它在各种场景下都能发挥重要作用。通过理解 Lucene 的核心概念...

    lucene5.X与lucene3.60的版本差异

    Lucene作为一个强大的全文搜索引擎库,其每个版本的更新都带来了一系列的变化和优化。本文将深入探讨Lucene 5.x与Lucene 3.6.0之间的主要差异,帮助开发者理解新版本的功能改进和API变动,以便更好地适应和利用新...

    lucene所有的jar包

    “Ik”的jar包则可能是指“Smart Chinese Analyzer for Lucene”,即ik分词器,这是一个专门针对中文的分词库,适用于Lucene和Solr。Ik分词器能够对中文文本进行有效的分词处理,提高了中文搜索的准确性。`ik-...

    lucene 的jar包和简单项目

    在这个项目中,可能包含了针对Lucene组件的测试代码,确保它们按照预期工作。 在使用Lucene时,开发者通常会经历以下几个步骤: - **创建索引**:首先,你需要将文档内容转化为Lucene可以处理的格式。这包括选择...

    Lucene-Demo.rar Lucene分词的demo

    分词器的配置是灵活的,可以根据需求选择不同的分词策略,比如标准分词器(StandardAnalyzer)适用于大多数英文文本,而中文分词可能需要使用IKAnalyzer或SmartChineseAnalyzer等针对中文特性的分词器。 在运行这个...

    lucene4.0+ik

    这是一款基于Java的开源中文分词器,专门针对Lucene进行优化,能够更好地处理中文词汇的切分问题。IKAnalyzer2012FF_u1是其2012年的一个更新版本,它修复了前一版本的一些问题,增强了对新词汇的识别能力,并且提供...

    lucene in action 2nd edition, lucene in action 第二版 PDF

    本书针对Lucene 2nd Edition进行了全面的解析,涵盖了从基础概念到高级应用的所有方面,旨在帮助读者理解和掌握全文检索的核心技术。 1. **全文检索基础**:书中首先介绍了全文检索的基本概念,包括倒排索引、TF-...

    基于Lucene的Lucene

    Lucene是一款开源的全文搜索引擎库,由Apache软件基金会维护,被广泛应用于各种搜索引擎的开发。它提供了一个高效、可扩展的框架,用于索引和搜索大量文本数据。本篇文章将深入探讨如何基于Lucene开发一个文件检索...

    ik分词器2012和lucene的资源和jar包以及lucene索引查看工具

    IK分词器(Intelligent Chinese Analyzer for Lucene)是一款针对中文的开源分词工具,适用于Lucene和Solr等全文检索引擎。它具有高性能、高准确率的特点,支持自定义扩展词典,可以灵活应对各种业务场景。2012版的...

    Lucene.net学习帮助文档

    这包括合理选择字段类型以减少存储开销,使用倒排索引压缩技术提高检索速度,以及调整缓存策略以平衡内存使用和查询响应时间。此外,注意定期重建索引以保持数据新鲜度。 **六、Lucene.net扩展功能** 除了基本的...

    Lucene3.0.1 官方api

    Lucene 3.0.1是该库的一个重要版本,它在前一版本的基础上进行了一些改进和优化,为开发者提供了更稳定和高效的搜索解决方案。 在Lucene 3.0.1中,官方API(应用程序编程接口)是开发者理解和使用Lucene的核心工具...

    Lucene索引优化

    这不仅涵盖了技术细节,还提供了实际操作建议,旨在帮助开发者针对特定场景优化其Lucene索引性能。 ### 知识点详细解析: #### 使用最新版本的Lucene 确保你正在使用Lucene的最新版本至关重要。软件的更新往往伴随...

Global site tag (gtag.js) - Google Analytics