`
Iloseyou
  • 浏览: 6075 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

lucene/solr的缺点

阅读更多
1) http 请求做了cache,有时候会出现新数据不可见,cache滞后的问题。—cache优化下也不是问题
2) admin 后台页面,支持中文、复杂查询语法上,欠友好。—自己稍加扩展也不是问题
3) swap core的时候,单结点多core,并且core对应的索引比较大的时候,切换过程出现内存2倍化现象,甚至超时现象。—如果分前后排切换这些都不是问题了。
4) index build和index search往往在一起,导致全量过程,磁盘峰值3倍化。一份原来的、一份新建的、一份优化的时候。—-当然,build和search分离是可以解决这个问题的,也是常规做法。
5) build 和search在一起,也使得build和search的一些参数设置不能区别对待,尤其是build和search合体的时候,预留磁盘、内存等加速build,反而影响search。—-当然可以 build search分离搞定
6) 分布式查询,如果有merge,性能有些问题。—-当然可以将数据分区,避免merge 7) 得分因子是可以调整的,但是得分因子的增加、得分公式的扩展,无法直接从solr配置插入。—-但是,可以扩展lucene的代码或者参数spanquery,重新一个query,插入solr,这样工作量稍大.另外,社区提供了bm25、pagerank等排序batch,对lucene有所以了解后,就可以直接引用了。
8) solr分布式索引全量、增量控制粒度,尚不够友好。指定结点、任何时刻全量,指定条件下增量都不够顺利。尽管solr提供了自定义扩展实现方法。这些也不是很大问题。
9) solr build和search和在一起,数据和业务其实绑定在一起了,没有彻底隔离。使得在上100个core的时候,数据源管理维护变得非常消耗资源。直接引入hadoop或者其他nosql存储时目前最流行的用来隔离数据和业务耦合性了。开源的分布式lucene方案非常多.
10) ABTest 共享相同索引目录,而不同排序或者不同分词 solr不能直接支持 11) ABTest 独立索引目录,不同排序或者不同分词,solr也不能直接支持
12) 一个core对应多个子目录,查询既可以查指定子目录也可以全部子目录查,以及更新某个子目录索引或者全部子目录索引,solr也不能直接支持,而这些在大数据量的时候是需要支持这些功能的。
13)solr或者lucene目前不支持快速的“局部”更新。这里是指对document的某个字段的快速更新,目前是需要传入完整的document,然后add进去。如果document的不变字段来源多个源的话,IO、计算资源有些浪费,如果更新量不大还好。—当然可以对更新的单独开辟内存来处理,而更大的那个基本索引不去动他。
14)solr不支持第三方条件过滤。例如从倒排中过滤处理一批doc,而这些doc需要与外部源进行doc域值过滤。问题主要是第三方信息动态性太强,不利于直接写索引中去。
15)solr 在支持中文分词的时候,有很多第三方包可以引入,但需要扩展queryparse有时候,总体看有优势也有劣势。优势是引入方便,劣势是词库、算法体系和lucene的不完全兼容,扩展、完善不是那么容易。
16)在排序上,对与去重或者对应基于时间动态性上,还没有现成的支持。去重是指排序的前几条结果,可能某个域值完全相同了,或者某几个域值完全相同,导致看起来,靠前的结果带有一些关联字段的“聚集性”,对有些应用来说,并不是最好的。
在时间因素上动态性,也没有直接支持,也只能靠间接的按时间排序来实现。 这个问题其实不是lucene、solr要关注的吧,应该是应用的特殊性导致的吧。
17) solr、lucene输出的日志,尚没有一个通用的分析工具,包括高频词、查询query聚合性等。只能自行去解析。
18) 在支持推荐上,还不能将log信息直接关联起来,推荐也基本上靠离线计算好,导入倒排索引,查询再关联起来。
19) 当内存30个G 以上,单节点索引数据量比较大的时候,jvm环境下FGC和内存管理显得非常辣手。调优需要仔细的测试
20) lucene很少面向接口,solr很多面向接口,插件化、可扩展使得solr很灵活
21)对于垂直型的平台化搜索,支持N个不同应用、不同schema、不同数据源、不同更新频率、不同查询逻辑、不同访问请求量、不同性能指标要求、不同机器配置、垂直扩容、水平扩容,solr显得不够胜任,尽管solrcloud中已经有非常多的宝贵设计经验。
22)流控和数控,solr也不能直接支持。访问请求不支持定时和定量控制,索引垂直扩容(增加索引副本,支撑更多访问请求)、索引水平扩容(增加索引分区数,支撑更多数据量,平衡性能和空间压力)
23) solr自容错还不够强大。例如schema变更导致的不合理检测以及配置错误的回滚、solrconfig的一些参数不能动态获取,必须事先配置好。oom之后不能自动reload!请求量大的时候也不能抛弃一些请求。
24) 基于位操作的高级应用还不够灵活,例如boolean 存储和facet、byte[]存储和facet、group等,支撑仍然不够友好。
25) query parse基本没有预测功能,不能调整query顺序和自动收缩条件。当然一般情况下是不需要这么复杂的优化。
26)一些比较变态的查询需求不是特别高效。例如查询某个域不空。当然可以将空域采取默认值代替,查询默认值再过滤。
27)对于唯一值域,没有优化,导致唯一值域的term数据膨胀。最常见的就是更新时间、上传时间等,占了非常大的term比例。
28)multivalue 字段,实质是建立多个相同域名的字段,并不是一个域。对于域值很多内容的话,只好和在一起保存。同时,long int short float double 等数组不能直接作为一个类型保存,全部得转为字符存储。空间和效率有些低。
29)有些词出现的频率特别高,导致该词的倒排连非常长,solr、lucene也没有干涉。任务交给应用自己斟酌,实际上solr单节点对于命中超过100w的,并多字段排序的时候,cache失效时性能非常糟糕的。
30)solr\lucene 对千万级别应用非常擅长,亿级别应用需要慎重对待。
分享到:
评论
1 楼 renzhengzhi 2015-07-20  
好文,赞一个。谢谢分享!

相关推荐

    SOLR HOME 相对路径配置

    在Solr,一个基于Lucene的全文搜索服务器,配置`SOLR_HOME`是至关重要的步骤,因为它决定了Solr实例的数据存储位置。本篇将详细解释三种不同的`SOLR_HOME`配置方式。 首先,我们来看第一种配置方法,即**基于当前...

    solrconfig.xml和schema.xml说明

    - **定义**:`<luceneMatchVersion>4.10.1</luceneMatchVersion>` 这个标签指定了 Solr 底层所使用的 Lucene 版本。在这个例子中,Solr 使用的是 Lucene 4.10.1 版本。保持 Lucene 版本与 Solr 版本的兼容性对于确保...

    solr教材-PDF版

    - **1.2.1 Solr使用Lucene并且进行了扩展**:Solr基于Apache Lucene构建,不仅继承了Lucene的强大功能,还提供了更高级别的分布式处理能力、更丰富的API支持等。 - **1.2.2 Schema(模式)**:Solr中的模式文件...

    Solr数据库插入(全量和增量)索引

    Solr 是一个基于 Lucene 的搜索引擎,可以快速高效地对大量数据进行索引和查询。在实际应用中,我们需要将数据插入 Solr 索引库中,以便实现高效的搜索功能。本文将详细介绍 Solr 数据库插入全量和增量索引的方法和...

    基于Solr的多表join查询加速方法

    它基于Lucene库,提供了高效、可扩展的搜索和分析能力。在处理多表join查询时,传统的关系型数据库如MySQL等通常能很好地应对,但Solr作为一个非关系型的搜索引擎,其原生功能并不支持复杂的数据关联操作。本文将...

    solr基本总结

    #### 二、Solr 的缺点 尽管 Solr 拥有许多优点,但它也有一些局限性: - **内存占用问题**:由于 Solr 主要依赖于索引,因此在某些情况下可能会消耗大量内存资源。 #### 三、其他搜索引擎与 Lucene ##### 3.1 ...

    Solr和ElasticSearch全文检索客户端代码

    Solr 和 Elasticsearch 都是强大的全文检索引擎,但在某些方面有各自的优缺点。Solr 更适合大规模、复杂的企业级应用,而 Elasticsearch 在易用性和社区支持上更胜一筹。选择哪一个通常取决于项目需求,例如是否需要...

    开源企业搜索引擎SOLR的应用教程

    - **1.2.1 Solr使用Lucene并且进行了扩展**:Solr基于Lucene开发,继承了Lucene的所有优点,并在此基础上添加了更多的高级特性,例如高可用性和分布式处理能力。 - **1.2.2 Schema(模式)**:Solr通过Schema来定义...

    Solr和ElasticSearch分析比较.docx

    Solr 和 ElasticSearch 是两种流行的搜索引擎,都是基于 Apache Lucene 库的开源搜索引擎。在选择搜索引擎时,需要了解它们的优缺点和比较。 Solr 的优缺点 Solr 是一个成熟、稳定的搜索引擎,具有以下优点: 1. ...

    电信设备-海量数据信息索引系统和索引构建方法.zip

    2. **分布式索引技术**:如HBase的RegionServer、Google的Bigtable、Apache Lucene/Solr的分布式搜索等,以及它们如何处理大规模数据的分布式存储和索引构建。 3. **数据压缩与存储优化**:讨论如何通过数据压缩减少...

    es介绍原理及使用方式.ppt

    Elasticsearch解决了Lucene的缺点,例如只能在Java项目中使用、使用非常复杂、不支持集群环境、索引数据如果太多就不行等问题。 Elasticsearch与Solr的区别在于,Solr利用zookeeper进行分布式管理,而Elasticsearch...

    五大分布式搜索方案选型.doc

    首先,Solr是基于Java开发的分布式搜索引擎,它基于Lucene库,提供Web服务器式的API,广泛应用于各种企业。Solr具有良好的可扩展性和高效的查询性能,支持索引分片以实现数据在多台机器上的分布式存储。然而,Solr在...

    大型网站技术架构_核心原理与案例分析_李智慧

    书中介绍了Lucene、Solr、Elasticsearch等开源搜索引擎的原理和应用。 六、数据库优化与分库分表 随着数据量的增加,数据库优化显得尤为重要。书中涵盖了索引优化、查询优化、读写分离、分库分表等策略,帮助读者...

    电子图书管理系统(毕业论文)

    4. 搜索引擎技术:如Lucene、Solr或Elasticsearch,用于快速全文检索电子图书内容。 5. 安全技术:包括加密传输(SSL/TLS)、身份验证(OAuth、JWT)、访问控制(RBAC)等,保障系统安全。 四、系统设计原则 1. ...

    Elasticsearch分享(1).docx

    * 都基于 Lucene 搭建。 * 都可以独立部署启动的搜索引擎服务软件。 * 都可以对数据进行操作、修改、添加、保存、查询等。 Elasticsearch 和 Solr 的区别: * 安装和使用:Elasticsearch 易于安装且非常轻巧。 * ...

    elasticsearch01

    目前比较知名的搜索引擎技术排名,Elasticsearch已经渐渐超越了Solr,独占鳌头。Elasticsearch的优点是分布式搜索引擎,可以实现搜索、日志统计、分析、系统监控等功能。 倒排索引 倒排索引的概念是基于MySQL这样...

    如何快速实现高并发短文检索

    - **具体方法**:采用Lucene、Solr或Elasticsearch等成熟的开源搜索框架,将索引数据与应用服务分离。 - **优点**:相比前两种方案,性能更为优越,能够较好地应对高并发场景。 - **缺点**:可能存在并发瓶颈;...

    基于java的上商城设计与实现.pdf

    7. **Solr全文搜索引擎**:基于Lucene开发的Solr搜索引擎提供了高效的全文检索功能,帮助用户快速找到目标商品,提升了搜索效率。 8. **购物车技术**:采用Cookie-Jsession和Redis结合的方式,即使用户关闭浏览器,...

Global site tag (gtag.js) - Google Analytics