前言:众所周知,提供高效、快速的搜索功能能提高网站的运营利润和效率,如果网站搜索相关结果太低,用户体验差,那么用户将可能会使用竞争对手的网站。那么如何提供高效快速的搜索呢?当前大约有20种搜索引擎可以选择,如果您正在寻找可靠而有效的方案,那么我建议您使用Elasticsearch,Solr或Sphinx,这三个都是开源搜索解决方案,得到了他们的贡献者社区的充分支持。它们都具有高性能,可扩展性和灵活性,且具有其特性。
ElasticSearch
简介:ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
优点:
近实时索引
高可扩展性(随着数据的增长,Elasticsearch会扩展)
可以存储数据(主要存储索引数据和日志)
数据可视化和分析
安全分析
机器学习
缺点:
许多功能需要自己扩展
Solr
简介:Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
优点:
近实时索引
多值属性搜索(非常适合电商)
丰富的功能集(开箱既用,丰富的全文搜索功能,支持各种建议器实现,支持拼写检查,支持同义词,突出显示)
丰富的内容文档(适合需要查看大量PDF,word文件的项目)
支持机器学习
支持数据可视化
缺点:
频繁修改数据会导致性能降低(Solr缓存是全局的,修改缓存会导致索引需要重新建立,这个过程是耗时的)
Sphinx
简介:Sphinx 是一个工具,它能够轻易地创建智慧和优雅的文档,出自Georg Brandl之手,在BSD许可证下授权。它能够把一组 reStructuredText 格式的文件转换成各种输出格式,而且自动地生成交叉引用,生成目录等。也就是说,如果有一个目录,里面包含一堆reST格式的文档(可能子目录里面也同样存在reST格式的文档),Sphinx能够生成一个漂亮的组织结构以及便于浏览和导航的HTML 文件(这些文件在其他的文件夹中)。当然对于同样的来源文件(reST格式),它也能够生成一个能够被编译(生成)PDF版本的LaTeX格式的文件
优点:
近实时索引
多值属性搜索
资源更好的利用(没有数据可视化和分析节约了资源)
缺点:
不支持数据可视化
不支持机器学习
不支持数据存储
配置繁琐
总结:
ElasticSearch更适合使用在实时更新数据的项目中,例如 优步,新浪等,Solr则拥有更快的检索速度和更丰富的功能机和多属性搜索更适合电商项目,而Sphinx在分面搜索功能方面拥有丰富的经验.总而言之,根据不同的项目选择搜索引擎才是最优解。
开发人员仅仅知道搜索引擎是不够的,所以我会在下篇博文分享搜索引擎的安装和使用等,敬请关注。