最近比较流行的段子是调侃搜狗CEO王小川,说他终于可以找女朋友了,因为之前王小川曾说过,搜狗不上市,就不找女朋友,搜狗终于宣布要赴美IPO了。
王小川最出名的是三级火箭理论,所谓的三级火箭,相信很多人都有所耳闻,依靠输入法的优势,提高浏览器的安装量,进而向用户推销自家的搜索引擎,然并卵,这个理论和绑定流氓软件的思路差不多。其实搜狗之所以能活下来,依靠的是腾讯的加持,包括QQ浏览器,以及移动端的微信一系列APP的流量导入。
不说搜狗,讲讲搜狗干的活,就提到了很有意思的东西,搜索。不得不说,这个东西牛逼,成就了互联网时代最伟大的公司Google,以及他国内的模仿者百度。
1、搜索能干什么
说到搜索,前面写过一篇《搜索简史》,讨论了搜索历史以来的几个阶段和未来的一个发展方向,结合AI,尤其是NLP是自然的选择,更智能的搜索是历史的选择。
除了Google,百度,搜狗这些公司搞的通用搜索之外,其实在企业内部还有大量的数据,专注企业内部数据的搜索,也是个非常大的市场,所以提供这块服务的企业也非常多。
提供企业搜索软件的企业也很多,不过现在都流行云了,就不讨论企业发行版本,本文只简单梳理下哪些云服务提供企业搜索服务,都有那些特点?
2.1、AWS
AWS诉求很简单,上层服务都是为了卖IAAS的资源,应对多个流行搜索软件的情况下,直接同时提供两种搜索服务,分别是:
2.2、百度BES
百度是基于ES(https://cloud.baidu.com/product/bes.html),且对ES做了不少改进,主要优化点还是结合了数据库的能力,比较有意思:
具体的可以看看网上搜一下百度的分享:Baidu对Elasticsearch的优化改进。
2.3、阿里:
阿里是从12年开始打造HA3引擎,当前的opensearch云服务也是基于内部自研的搜索,关于搜索的架构可以看这篇文章,总的来说和ES架构比较类似,可以看看这篇访谈:https://yq.aliyun.com/articles/7479?commentId=984,讲了个大概。
另外从ES中文社区中的阿里招聘帖以及和从据https://www.elastic.co公司的朋友介绍,阿里已经开始寻求elastic.co的服务支持。
2.4、腾讯
说到搜索,肯定要谈腾讯,应该说腾讯当年费了大力气,想搞搜索,结果最后还是搞不成,把业务并给搜狗,入股搜狗,也成就了王小川同学。
腾讯最近又开始投入云服务,上面也有一个服务叫腾讯云搜TCS,归属在AI领域(https://cloud.tencent.com/product/tcs):
官网上号称继承soso的技术积累(见下面一段话),另外结合NLP技术(不知道真假哈,soso团队不都合并给别人了吗?):
只有真正的理解用户输入的检索串,才能给出更好的搜索结果。腾讯云搜有专门的自然语言处理技术团队,并拥有“文智”中文语义开放平台。平台有60多个腾讯产品的成功应用经验和上千亿的互联网语料库积累,提供中文分词、智能纠错、同义词识别、意图识别等能力。腾讯云搜借助该能力,让搜索框智能识别用户的检索意图,对检索串进行理解与纠正,把好用户检索的第二关。
总的来说,几家巨头各有特色,用开源软件的,用自己的也有。
3、底层技术上:
搜索技术底层技术,大同小异。开源用的比较多的是solr和es,底层基于Lucene,大家可以去看看Lucene的介绍(https://baike.baidu.com/item/Lucene/6753302?fr=aladdin)。
讲到Lucene,就不得不提大牛Doug Cutting,不光是lucene之父,也是hadoop之父,现任cloudera首席架构师。大牛最近还亮相国内接受访谈,聊了聊hadoop十周年(http://news.yesky.com/263/105073263.shtml)。
说来说去,总结一句话,Hadoop是开源开放的,但是开源软件就没有特别好的商业模式,都不赚钱。神奇的逻辑!
4、solr/ES快速比较
各方面对比一下:
(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扩展
•两者均需要投入资源进行二次开发