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

标签: 开源 搜索引擎 lucene | 发表时间:2013-05-08 13:46 | 作者:con@lutaf.com (鲁塔弗)
分享到:
出处:http://lutaf.com

开源搜索引擎程序有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,性能现在是差点,但硬件和时间会帮你搞定一切

相关 [开源 搜索引擎 lucene] 推荐:

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

- - 鲁塔弗的博客
lucene系,java开发,包括 solr和 elasticsearch. sphinx,c++开发,简单高性能. 搜索引擎程序这个名称不妥当,严格说来应该叫做 索引程序(indexing program),早期主要用来做中文全文搜索,但是随着互联网的深入普及,各家网站规模越来越大,索引程序在 优化网站架构上发挥了更大的作用: 替代mysql数据库 内置的索引.

调研:开源搜索引擎

- - CSDN博客互联网推荐文章
本文档是对现有的开源的搜索引擎的一个简单介绍. Lucene的开发语言是java, 也是java家族中最为出名的一个开源搜索引擎, 在java世界中已经是标准的全文检索程序, 它提供了完整的查询引擎和索引引擎, 没有中文分词引擎, 需要自己去实现, 因此用Lucene去做一个搜素引擎需要自己去架构.另外它不支持实时搜索, 但linkedin和twitter有分别对Lucene改进的实时搜素.

叫板Google,YaCy发布开源搜索引擎

- 洋白菜 - 36氪
一个名叫YaCy的项目要在搜索市场上向Google叫板,放出了一个开源搜索引擎,在互联网和内联网皆可使用. YaCy引擎基于点对点连接,而不是通过中央服务器进行搜索查询. 用户下载该软件后就可以进行搜索,保证内容不被审查、搜索结果不会被中央服务器记录和分析. “我们在网络上的大多数行为都和搜索有关,这是我们和所要信息的关键一环.

LinkedIn开源IndexTank,包括搜索引擎和服务

- - ITeye资讯频道
IndexTank是一家在今年10月份被LinkedIn收购的公司,它有三个主要产品:. IndexEngine:一个实时的全文搜索和索引系统. API:一个RESTful界面来处理授权、验证以及与IndexEngine(s)的通讯. Nebulizer:一个多重任务执行框架(multitenant framework),用来托管和管理无限数量的运行在IaaS层的索引.

手撕包菜磁力搜索引擎的开源说明

- - Xiaoxia[PG]
已经一年半载没有写博客了,搞得上来不知道写些什么. 博客上的内容还时不时有人评论,大部分我还是会一一回复的. 有些人会关注我的博客用什么主机,我的博客现在是用Linode的主机,因为现在很便宜,而且配置不差. 另外比较多的是问手撕包菜的源代码能否提供,能否出售. 今天我写这个文章就是把手撕包菜的网站开源了,包括网站页面,DHT爬虫和搜索引擎相关部分.

lucene排序

- - 开源软件 - ITeye博客
排序是对于全文检索来言是一个必不可少的功能,在实际运用中,排序功能能在某些时候给我们带来很大的方便,比如在淘宝,京东等一些电商网站我们可能通过排序来快速找到价格最便宜的商品,或者通过排序来找到评论数最高或卖的最好的商品,再比如在Iteye里的博客栏里,每天都会以降序的方式,来显示出最新发出的几篇博客,有了排序,我们就能在某些时候很方便快速的得到某些有效信息,所以说排序功能,无处不在 ^_^.

Lucene 4.x 之 IndexReader

- - zzm
在Lucene 3.x时代,《Lucene In Action》是一本相当不错的参考书,书中详细介绍了Lucene各种高级使用技术,对于开发者来说非常实用. 但是近期Lucene升级到了4.x版本,在性能等各方面有了很大的提高,值得在新项目中使用. 然而Lucene 4.x中的API相比3.x来说有了很大的改变,《Lucene In Action》中的很多内容都已经过时了,并且由于4.x推出的时间不长,还没有比较好的文档来对用法进行说明,这个系列文章就是想记录下自己使用Lucene 4.x的经验体会,供大家参考使用.

人眼启发视觉搜索引擎

- feng823 - Solidot
Google上周宣布将支持声音和图片进行搜索,但一家创业公司在图像搜索方面走在了Google前面. 源自伦敦帝国学院研究项目的创业公司Cortexica,开发出视觉搜索工具,通过手机拍摄产品照片,它会自动呈现价格信息. Cortexica已经发布了一个用于比较酒价格的工具WINEfindr. Cortexica的视觉搜索技术是受到了人眼视觉系统的启发,它能识别出一个目标的关键特征,不受方位、大小、光线亮暗的影响.

比较好的学术搜索引擎

- hfut_chen - C++博客-首页原创精华区
     摘要: 1、http://scholar.google.com/. Google学术搜索滤掉了普通搜索结果中大量的垃圾信息,排列出文章的不同版本以及被其它文章的引用次数. 略显不足的是,它搜索出来的结果没有按照权威度(譬如影响因子、引用次数)依次排列,在中国搜索出来的,前几页可能大部分为中文的一些期刊的文章.

uSniff:BT种子搜索引擎

- leqoqo - 软件志
一、uSniff相关信息: 1、官方主页:http://www.usniff.com/ 2、简介:uSniff是一个BT种子搜索引擎,简单、易用、实时是其最大的优点,其搜索引擎数据库包含了17个知名种子站点的种子信息,目的是想发展成为世界上最大的BT种子搜索引擎,而且对于每个种子,该搜索引擎都会进行安全认证,以保证用户的正常使用.