一直在使用Lucene,对它的性能也一直比较乐观,相信只要做适当的配置优化,性能总可以达到要求的。只是这两天连续在网上看到几个有影响力的人对它的印象不太好。
这是相关的链接:
亿级数据的高并发通用搜索引擎架构设计[原创]
JavaEye3.0开发手记之三 - 狮身人面
心里咯噔的一下子虚了,感觉又给Lucene忽悠了。Lucene自称性能也不错的,而且用户群体多。也有好几个语言版本,基于它开发的工具也多。怎么也这么儿戏呀。这世界真的没有可以信任了,那么多的食品安全事件,就像House的主角说的“Everybody lies”。
但是我这个人也比较执着,不是自己看到的数据却也不会死心的,于是决定自己亲身实验一番。
以下是测试环境:
CPU AMD Turion 64 *2, 1.80G
Memory 3G
Windows XP
Eclipse
Lucene-core 2.4.0
测试对象:
170M大小的日志文件,总共2071364行,每行做成一个Lucene的Document
1.08G大小的日志文件,总共9076020行, 每行做成一个Lucene的Document
测试用例:
170M大小的日志文件,commit every 10000 documents,Field.Store.YES,默认设置
|
索引时间
|
索引大小
|
搜索时间
|
138秒
|
240M
|
首次187ms,后续平均25ms
|
170M大小的日志文件, Field.Store.NO,
MaxBufferedDocs 10000,MaxFieldLength 10240,MergeFactor 1000, RAMBufferSizeMB 32
|
索引时间
|
索引大小
|
搜索时间
|
68秒
|
68.8M
|
首次203ms,后续平均45ms
|
1.08G大小的日志文件, Field.Store.NO,
MaxBufferedDocs 10000,MaxFieldLength 10240,MergeFactor 1000, RAMBufferSizeMB 32
|
索引时间
|
索引大小
|
搜索时间
|
598秒
|
317M
|
首次469ms,后续平均93ms,后续MAX 453ms,后续MIN 16ms
|
1.08G大小的日志文件,主从索引,Merge every 100,000 Documents, Field.Store.NO,
MaxBufferedDocs 10000,MaxFieldLength 10240,MergeFactor 1000, RAMBufferSizeMB 32
|
索引时间
|
索引大小
|
搜索时间
|
378秒
|
317M
|
首次406ms,后续平均87ms,后续MAX 406ms,后续MIN 0ms
|
1.08G大小的日志文件,主从索引,Merge every 500,000 Documents, Field.Store.NO,
MaxBufferedDocs 10000,MaxFieldLength 10240,MergeFactor 1000, RAMBufferSizeMB 32
|
索引时间
|
索引大小
|
搜索时间
|
387秒
|
317M
|
首次407ms,后续平均90ms,后续MAX 422ms,后续MIN 0ms
|
看到这样的测试数据,心理总算踏实多了。应该说如果不对Lucene的索引配置做一些调整,索引时间确实挺长的。用上面170M文件,200多万行记录来说,配置前后相差了一半的时间。1G多文件,900多万行记录索引也只用了598秒,速度也不慢吧。后面用的主从索引模式更是将索引速度提高到380秒左右。搜索速度也还可以。
Lucene 2.3版本之后对性能方面做了比较大的提升,因此这里的测试数据才比较好看吧。也难怪大佬们对它恨铁不成钢的。
分享到:
相关推荐
**Lucene 2.4.0 知识点详解** Lucene 是一个开源的全文搜索引擎库,由 Apache 软件基金会开发并维护。在版本 2.4.0 中,它提供了强大的文本检索功能,使得开发者能够快速、高效地在大量数据中搜索相关信息。这个...
在Lucene 2.4.0中,查询性能的提升主要体现在查询优化和缓存策略上。`BitSet`类用于高效地存储和操作位集,加速了匹配文档的查找。`Filter`和`QueryWrapperFilter`等过滤器类允许对查询结果进行进一步筛选,而`...
- **改进的性能**:在 2.4.0 版本中,Lucene 对搜索速度和内存使用进行了优化,提供了更快的索引和搜索体验。 - **增强的稳定性**:修复了前一版本中的许多错误,提高了整体的系统稳定性和可靠性。 - **扩展性**:...
《深入剖析Lucene 2.4.0:核心与扩展》 Lucene是一个开源全文搜索引擎库,由Apache软件基金会开发并维护。在2.4.0版本中,Lucene为开发者提供了一套强大的文本检索和分析工具,使得构建高效、可扩展的搜索应用成为...
7. 多线程支持:Lucene 2.4.0支持多线程索引和搜索,提升了性能。 四、实际应用 Lucene 2.4.0被广泛应用于各种搜索场景,如企业内部知识库搜索、电商产品搜索、邮件搜索等。通过结合其他开源项目,如Solr和Elastic...
- **性能优化**:Lucene 2.4.0对内部数据结构进行了优化,提升了搜索速度和内存使用效率。 - **多字段搜索**:支持同时在多个字段上执行搜索,提供了更灵活的查询方式。 - **查询解析器**:新的查询解析器...
《深入剖析Lucene 2.4.0源码》 Lucene是一款强大的全文搜索引擎库,由Apache软件基金会开发,广泛应用于各种搜索应用中。这里我们聚焦于Lucene 2.4.0版本的源码,这是一份珍贵的学习资料,对于理解Lucene的工作原理...
开发者可以通过这个版本学习Lucene的基础,然后将其应用到更现代的版本中,以利用最新的特性和性能优化。对于初学者来说,这个全面的压缩包是一个极好的起点,包含了学习和实践Lucene所需的一切。
Lucene.NET 2.4.0是对原生Java版Lucene的.NET平台移植,保持了与原版的高度兼容性,同时优化了.NET环境下的性能表现。 **二、主要特性** 1. **跨平台支持**:Lucene.NET 2.4.0支持.NET Framework,同时兼容.NET ...
《Lucene核心技术详解——以lucene-core-2.4.0.jar为例》 Apache Lucene是一个开源全文搜索引擎库,它为开发者提供了强大的文本搜索功能。本文将以“lucene-core-2.4.0.jar”这一特定版本为例,深入探讨Lucene的...
`lucene-core-2.4.0` 是对2.3.0的一个更新,通常会包含错误修复、性能改进和新特性的添加。尽管版本号只相差一个小版本,但在实际应用中可能会带来一些显著的变化,比如搜索效率的提高或者API的小幅调整。 同时,...
在这个项目中,我们将探讨如何利用Lucene 2.4.0版本与Access数据库结合,实现对数据库内容的全文检索。 首先,我们需要理解Lucene的基本工作原理。Lucene的核心概念包括文档(Document)、字段(Field)和索引...
值得注意的是,尽管这里给出的是Lucene 2.4.0版本,Lucene已经发展到了更高级的版本,新版本通常会包含更多的优化和新特性。因此,在实际项目中,建议使用最新稳定版本以获取最佳性能和兼容性。 总之,Lucene是一个...
1. **性能优化**:2.4.0版本针对查询性能进行了优化,提高了搜索速度和内存效率。 2. **稳定性提升**:修复了多个已知问题,提升了系统的稳定性和可靠性。 3. **新功能**:引入了一些新的特性和改进,比如更强大的...
**Lucene.Net 2.4.0:全中文解析与应用** **一、Lucene.Net 简介** Lucene.Net 是 Apache Lucene 的 .NET 版本,它是一个高性能、可扩展的信息检索库,提供了强大的全文搜索功能。Lucene.Net 采用 C# 语言编写,...
Elasticsearch 2.4.0 是一个流行的开源全文搜索引擎,它基于 Lucene 库,提供了分布式、实时、可扩展的搜索和分析能力。在这个压缩包中,包含了作者亲测的学习资料,特别是针对 PHP 开发者在 CentOS7 操作系统上的...
结合以上信息,这个项目可能是在尝试利用 Jython 将 Lucene(一个强大的 Java 全文搜索引擎)集成到 Python 2.6 环境中,特别适用于 Windows 32 位系统,并且是一个较早的实现,可能考虑了当时的兼容性和性能需求。...
- **Lucene**:Apache Lucene是一个用Java编写的高性能全文搜索引擎库。它提供了丰富的API用于构建索引、执行查询等操作。Lucene的核心功能包括文档索引、文本解析、索引搜索等。开发者可以根据需要自定义索引规则,...