最近比较流行的段子是调侃搜狗CEO王小川,说他终于可以找女朋友了,因为之前王小川曾说过,搜狗不上市,就不找女朋友,搜狗终于宣布要赴美IPO了。
王小川最出名的是三级火箭理论,所谓的三级火箭,相信很多人都有所耳闻,依靠输入法的优势,提高浏览器的安装量,进而向用户推销自家的搜索引擎,然并卵,这个理论和绑定流氓软件的思路差不多。其实搜狗之所以能活下来,依靠的是腾讯的加持,包括QQ浏览器,以及移动端的微信一系列APP的流量导入。
不说搜狗,讲讲搜狗干的活,就提到了很有意思的东西,搜索。不得不说,这个东西牛逼,成就了互联网时代最伟大的公司Google,以及他国内的模仿者百度。
1、搜索能干什么
说到搜索,前面写过一篇《》,讨论了搜索历史以来的几个阶段和未来的一个发展方向,结合AI,尤其是NLP是自然的选择,更智能的搜索是历史的选择。
除了Google,百度,搜狗这些公司搞的通用搜索之外,其实在企业内部还有大量的数据,专注企业内部数据的搜索,也是个非常大的市场,所以提供这块服务的企业也非常多。
2、国内搜索服务现状
提供企业搜索软件的企业也很多,不过现在都流行云了,就不讨论企业发行版本,本文只简单梳理下哪些云服务提供企业搜索服务,都有那些特点?
2.1、AWS
AWS诉求很简单,上层服务都是为了卖IAAS的资源,应对多个流行搜索软件的情况下,直接同时提供两种搜索服务,分别是:
- CloudSearch,基于solr ,具体可以看看https://aws.amazon.com/cn/cloudsearch/?nc2=h_m1。
- Elasticsearch Serivce,基于eleastic search,具体可以看看https://aws.amazon.com/cn/elasticsearch-service/?nc2=h_m1。
2.2、百度BES
百度是基于ES(https://cloud.baidu.com/product/bes.html),且对ES做了不少改进,主要优化点还是结合了数据库的能力,比较有意思:
-
增加分布式SQL查询层,兼容MySQL协议
-
增加权限管理系统
-
支持online schema change
-
引入DistributedLog解决脑裂和数据一致性问题
-
支持跨机房数据同步
-
支持多租户资源隔离
具体的可以看看网上搜一下百度的分享:Baidu对Elasticsearch的优化改进。
2.3、阿里:
阿里是从12年开始打造HA3引擎,当前的opensearch云服务也是基于内部自研的搜索,关于搜索的架构可以看这篇文章,总的来说和ES架构比较类似,可以看看这篇访谈:2019/20190426A/F0117946
另外从ES中文社区中的阿里招聘帖以及和从据https://www.elastic.co公司的朋友介绍,阿里已经开始寻求elastic.co的服务支持。
2.4、腾讯
说到搜索,肯定要谈腾讯,应该说腾讯当年费了大力气,想搞搜索,结果最后还是搞不成,把业务并给搜狗,入股搜狗,也成就了王小川同学。
腾讯最近又开始投入云服务,上面也有一个服务叫腾讯云搜TCS,归属在AI领域(https://cloud.tencent.com/product/tcs):
官网上号称继承soso的技术积累(见下面一段话),另外结合NLP技术(不知道真假哈,soso团队不都合并给别人了吗?):
只有真正的理解用户输入的检索串,才能给出更好的搜索结果。腾讯云搜有专门的自然语言处理技术团队,并拥有“文智”中文语义开放平台。平台有60多个腾讯产品的成功应用经验和上千亿的互联网语料库积累,提供中文分词、智能纠错、同义词识别、意图识别等能力。腾讯云搜借助该能力,让搜索框智能识别用户的检索意图,对检索串进行理解与纠正,把好用户检索的第二关。
2.5、小结一下
总的来说,几家巨头各有特色,用开源软件的,用自己的也有。
-
用开源的,ES相对来说,火一点。
-
自研的也开始转向开源ES。
-
结合机器学习技术,是当前研究重点。
3、底层技术上:
搜索技术底层技术,大同小异。开源用的比较多的是solr和es,底层基于Lucene,大家可以去看看Lucene的介绍(2019/20190426A/F0117950
讲到Lucene,就不得不提大牛Doug Cutting,不光是lucene之父,也是hadoop之父,现任cloudera首席架构师。大牛最近还亮相国内接受访谈,聊了聊hadoop十周年(2019/20190426A/F0117952.html
说来说去,总结一句话,Hadoop是开源开放的,但是开源软件就没有特别好的商业模式,都不赚钱。神奇的逻辑!
4、solr/ES快速比较
4.1、下面简单比较下solr和ES,细节不谈,直接给结论:
-
Solr/ElasticSearch(ES)均是基于Apache License 2.0的、基于lucene的、提供了较为完整的搜索引擎能力的开源项目。
-
Solr与ES各有特点,但都比较成熟,对于一般的需求,两者都能很好的胜任。两者的能力也在逐
-
渐趋同。早几年ES更受欢迎,但最近Solr也已经补齐了短板。
-
2019/20190426A/F0117955
各方面对比一下:
(1)接口
?Solr支持SQL。两者均支持RESTAPI。ES有自定义的Query DSL
(2)性能
?两者性能相近,但如果做性能优化,两者均需要投入人力进行深入分析
(3)领域
?Solr:站内搜索
?ES:站内搜索、ELK、分析
(4)开源
?Solr:完全开源
?ES:开源,但掌控于一家公司
(5)Hadoop支持
?Solr:支持与HDFS深入结合,但仅支持MR
?ES:在YARN、HDFS、SPARK、HIVE、PIG等方面均有支持,但index on HDFS功能有限
(6)生态
?ES生态要好于Solr,至少从目前来看
(7)Learning to rank扩展
?两者均需要投入资源进行二次开发
4.2、总的来说:
-
Solr/ES之间的区别不像很多其他开源组件(如HBASE与MongoDB,如SparkSQL与HIVE,如SparkSreaming与Flink)之间有明显的不同,导致各自有各自明确的使用场景。在绝大多数情况下,Solr能完成的任务,ES也一样,反之亦然,而且性能差距很小。这就像VI/Emacs的编辑器之争一样,每个都有很多拥簇。
-
统计数据表明,ES的增长要快于Solr,并且已经超越Solr成为最受欢迎的搜索引擎。
5、最后放点基础资料,希望对你有用:
-
ES搭建原理和案例:2019/20190426A/F0117957.html
-
中文权威指南,对ES会入门理解非常有帮助:https://www.elastic.co/guide/cn/elasticsearch/guide/current/mapping-analysis.html
-
参考接口文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/_cluster_health.html
为了方便大家相互交流学习,创建了一个公众号同名微信群:《大数据和云计算技术交流群》,欢迎大家加下面我的微信,我拉大家进群,自由交流。同时如果大家觉得对您有帮助,也欢迎大家打赏:)。