开源搜索引擎评估:lucene sphinx elasticsearch

目录(?)[+]

开源搜索引擎评估:lucene sphinx elasticsearch

开源搜索引擎程序有3大类

  • lucene系,java开发,包括solrelasticsearch
  • sphinx,c++开发,简单高性能
  • Xapian,c++开发

搜索引擎程序这个名称不妥当,严格说来应该叫做索引程序(indexing program),早期主要用来做中文全文搜索,但是随着互联网的深入普及,各家网站规模越来越大,索引程序在 优化网站架构上发挥了更大的作用:替代mysql数据库内置的索引

  1. 让mysql no sql化,只承担数据持久化存储的功能
  2. 消除join查询/子查询,提高数据库的并发处理能力

使用状况

Lucene出自名门,子孙兴旺,而且它的兄弟Hadoop风头正盛,所以名气最大,而sphinx因为简单可靠,代码结构优良,性能非常好,在国内大型网站中使用最广.xapian用户太少,不建议使用

技术选型要选人最多的方向,不可标新立异

搜索性能

  • elasticsearch有数据说是200ms
  • solr 我目前手上没有数据,应该比sphinx慢
  • sphinx 平均搜索时间:20ms,如此之快,是因为sphinx的基本上可以算作静态索引

    client API只能update已经存入的document属性,不能添加新文档。

    加入新文档只有通过 build/merge的方式,磁盘IO开销很大,从这个角度,sphinx不适合内容更新频繁的网站,不适合做实时索引。但现实情况是国内强UGC的网站基本上都采用sphinx,比如新浪微博,搜狐微博,赶集网,discuz等

    这对程序员来说是巨大的挑战:只能通过建立多级索引,或者采用sphinx+solr的混合方案

Lucene系

  • Lucene 就是一个纯粹的索引程序代码包,使用的时候,你得写一个简单的server程序(接受关键词-通过lucence查询-返回结果),然后配置在应用服务器 中(tomcat/Resin),一般来说,这个server程序会采用http协议,或者xml-rpc,直接用tcp那也太无聊了
  • Solr 有大侠急公好义,帮你把上文提到的web 程序写好了,你只需要配置部署就可用,这就是solr,solr对外的接口是http协议,也支持分布式索引
  • Elasticsearch,新项目,最近很红,其实也是Lucene的马甲,有如下特点
    1. restful接口
    2. 分布式导向,包括分布式搜索,分布式索引,零配置,自动分片,索引自动负载
    3. 针对实时搜索专门优化:先把索引放在内存中,定期同步到硬盘
    4. 附带web 图形化管理工具

elasticsearch 从设计思路上是针对 Amazon CloudSearch,它的关键词是

  • 分布式
  • 实时
  • 高可用

这几点一看就是高富巨,日uv几百万的网站,索引也只有几十G,普通玩家是用不着的

但是从紧跟前沿技术的角度,如果你的索引服务器超过3台,可以尝试部署elasticsearch,性能现在是差点,但硬件和时间会帮你搞定一切

0
0
时间: 2024-11-14 20:26:31

开源搜索引擎评估:lucene sphinx elasticsearch的相关文章

Solr vs. Elasticsearch谁是开源搜索引擎王者

当前是云计算和数据快速增长的时代,今天的应用程序正以PB级和ZB级的速度生产数据,但人们依然在不停的追求更高更快的性能需求.随着数据的堆积,如何快速有效的搜索这些数据,成为对后端服务的挑战.本文,我们将比较业界两个最流行的开源搜索引擎,Solr和ElasticSearch.两者都建立在Apache Lucene开源平台之上,它们的主要功能非常相似,但是在部署的易用性,可扩展性和其他功能方面也存在巨大差异. 关于Apache Solr Apache Solr基于业界大名鼎鼎的java开源搜索引擎L

转 Solr vs. Elasticsearch谁是开源搜索引擎王者

转 https://www.cnblogs.com/xiaoqi/p/6545314.html 当前是云计算和数据快速增长的时代,今天的应用程序正以PB级和ZB级的速度生产数据,但人们依然在不停的追求更高更快的性能需求.随着数据的堆积,如何快速有效的搜索这些数据,成为对后端服务的挑战.本文,我们将比较业界两个最流行的开源搜索引擎,Solr和ElasticSearch.两者都建立在Apache Lucene开源平台之上,它们的主要功能非常相似,但是在部署的易用性,可扩展性和其他功能方面也存在巨大差

开源搜索引擎

开源搜索引擎 当前是云计算和数据快速增长的时代,今天的应用程序正以PB级和ZB级的速度生产数据,但人们依然在不停的追求更高更快的性能需求.随着数据的堆积,如何快速有效的搜索这些数据,成为对后端服务的挑战.本文,我们将比较业界两个最流行的开源搜索引擎,Solr和ElasticSearch.两者都建立在Apache Lucene开源平台之上,它们的主要功能非常相似,但是在部署的易用性,可扩展性和其他功能方面也存在巨大差异. 关于Apache Solr Apache Solr基于业界大名鼎鼎的java

开源搜索引擎的比较

为解决全站搜索问题.对开源搜索引擎的一个比较.在我的项目中,是ssh+jsp结构.选择solr是最佳的. 1. Lucene及其变种 Luncene Lucene的开发语言是Java,也是Java家族中最为出名的一个开源搜索引擎,在Java世界中已经是标准的全文检索程序,它提供了完整的查询引擎和索引引擎,没有中文分词引擎,需要自己去实现,因此用Lucene去做一个搜素引擎需要自己去架构.另外它不支持实时搜索,但linkedin和twitter有分别对Lucene改进的实时搜素. 其中Lucene

大数据处理方面的 7 个开源搜索引擎

大数据处理方面的 7 个开源搜索引擎 大数据是一个包括一切的术语,指的是数据集很大很复杂,他们需要特别设计的硬件和软件工具.数据集通常是 T 或者更大级别.这些数据集从各种各样的来源创建,包括传感器,收集气象信息,公开可用的信息,如杂志.报纸.文章.还包括购买交易记录.网络日志.医疗记 录.军事侦察.视频和图像档案和大规模的电子商务等等. 要分析这些数据需要专门的软硬件,本文介绍 7 个开源的搜索引擎适合用于大数据处理: 1. Apache Lucene Lucene 是apache软件基金会一

[转载] 开源搜索引擎的比较(五)

开源搜索引擎的比较(五) 5.3整体评估 基于以上结果,本文在不同的文档集合上进行了实验, 搜索引擎建索引的时间开销较小的是ht://Dig, Indri, IXE, Lucene, MG4J, Swish-E, Swish++, Terrier, XMLSearch, 和 Zettair.而建索引后的存储大小的分析,可以分为三种类型,Lucene, MG4J, Swish-E, Swish++, XMLSearch 和 Zettair 的索引的大小是数据集大 小的25%-35%. 而Terri

【搜索引擎】SOLR VS Elasticsearch(2019技术选型参考)

SOLR是什么 (官方的解释) Solr是基于Apache Lucene构建的流行的.快速的.开源的企业搜索平台. Solr也是高度可靠.可伸缩和容错的,提供分布式索引.复制和负载平衡查询.自动故障转移和恢复.集中配置等等.Solr为世界上许多最大的互联网站点提供搜索和导航功能. Solr官网地址:https://lucene.apache.org/solr/ Elasticsearch Solr的同类产品主要是Elasticsearch.Elasticsearch现在非常火,通过谷歌搜索的趋势

第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门搜索

第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲-elasticsearch(搜索引擎)用Django实现我的搜索以及热门 我的搜素简单实现原理我们可以用js来实现,首先用js获取到输入的搜索词设置一个数组里存放搜素词,判断搜索词在数组里是否存在如果存在删除原来的词,重新将新词放在数组最前面如果不存在直接将新词放在数组最前面即可,然后循环数组显示结果即可 热门搜索实现原理,当用户搜索一个词时,可以保存到数据库,然后记录搜索次数,利用redis缓存搜索次数最到的词,过一段时间更新

五十 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门搜索

第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲-elasticsearch(搜索引擎)用Django实现我的搜索以及热门 我的搜素简单实现原理我们可以用js来实现,首先用js获取到输入的搜索词设置一个数组里存放搜素词,判断搜索词在数组里是否存在如果存在删除原来的词,重新将新词放在数组最前面如果不存在直接将新词放在数组最前面即可,然后循环数组显示结果即可 热门搜索实现原理,当用户搜索一个词时,可以保存到数据库,然后记录搜索次数,利用redis缓存搜索次数最到的词,过一段时间更新