搜索概述

最近比较流行的段子是调侃搜狗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做了不少改进,主要优化点还是结合了数据库的能力,比较有意思:

  1. 增加分布式SQL查询层,兼容MySQL协议
  2. 增加权限管理系统
  3. 支持online schema change
  4. 引入DistributedLog解决脑裂和数据一致性问题
  5. 支持跨机房数据同步
  6. 支持多租户资源隔离

具体的可以看看网上搜一下百度的分享: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多个腾讯产品的成功应用经验和上千亿的互联网语料库积累,提供中文分词、智能纠错、同义词识别、意图识别等能力。腾讯云搜借助该能力,让搜索框智能识别用户的检索意图,对检索串进行理解与纠正,把好用户检索的第二关。

2.5、小结一下

总的来说,几家巨头各有特色,用开源软件的,用自己的也有。

  1. 用开源的,ES相对来说,火一点。
  2. 自研的也开始转向开源ES。
  3. 结合机器学习技术,是当前研究重点。

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快速比较

4.1、下面简单比较下solr和ES,细节不谈,直接给结论:

  1. Solr/ElasticSearch(ES)均是基于Apache License 2.0的、基于lucene的、提供了较为完整的搜索引擎能力的开源项目。
  2. Solr与ES各有特点,但都比较成熟,对于一般的需求,两者都能很好的胜任。两者的能力也在逐
  3. 渐趋同。早几年ES更受欢迎,但最近Solr也已经补齐了短板。
  4. http://solr-vs-elasticsearch.com/列出了Solr5.3与ES2.0的较为详细的对比。

各方面对比一下:

(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、总的来说:

  1. Solr/ES之间的区别不像很多其他开源组件(如HBASE与MongoDB,如SparkSQL与HIVE,如SparkSreaming与Flink)之间有明显的不同,导致各自有各自明确的使用场景。在绝大多数情况下,Solr能完成的任务,ES也一样,反之亦然,而且性能差距很小。这就像VI/Emacs的编辑器之争一样,每个都有很多拥簇。
  1. 统计数据表明,ES的增长要快于Solr,并且已经超越Solr成为最受欢迎的搜索引擎。

5、最后放点基础资料,希望对你有用:

  • ES搭建原理和案例:http://wetest.qq.com/lab/view/300.html?from=content_qcloud
  • 中文权威指南,对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

原文发布于微信公众号 - 大数据和云计算技术(jiezhu2007)

原文发表时间:2017-08-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

作为一个新手程序员该如何成长?

“哦,天那。相比其他开发者,我又笨又没准备。老板会知道我是多么无能,我要被炒鱿鱼了。”

532
来自专栏程序员互动联盟

【答疑释惑第三十七讲】什么是嵌入式?

疑惑一 什么是嵌入式? 嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带...

3397
来自专栏Hongten

软件开发的生命周期

同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期(软件生命周期)。把整个软件生存周期划分为若干阶段,使得每...

402
来自专栏Java学习123

程序员如何持续提升自己的开发技能

3059
来自专栏PingCAP的专栏

TiDB 在西山居实时舆情监控系统中的应用

西山居创建 1995 年初夏,在美丽的海滨小城珠海,西山居工作室孕育而生,一群西山居居士们十年如一日尅勊业业的奋斗。"创造快乐,传递快乐!" 一直是西山居居士们...

2546
来自专栏程序员互动联盟

做软件测试,如何月薪过万?

很多人提到软件测试都觉得测试,就是看看软件能不能正常的运行,而且一般测试都是一些小姑娘,一般都是嘻嘻哈哈在聊天中就完成一些软件功能的测试,还有多大的技术含量,这...

35111
来自专栏互联网高可用架构

从点线面体谈开发到架构师的转型【完整版】

1395
来自专栏互联网杂技

当机器人取代程序员写代码,会发生什么呢?

编者按:在过去的十年时间里,软件开发行业已经发生了非常大的变化。过去,程序员需要在大学或工作中花费好几年时间才能学习掌握一些编程知识,熟悉了解一些昂贵的服务器性...

34714
来自专栏CSDN技术头条

从点线面体谈开发到架构师的转型

我工作十余年,从负责一个模块,到负责一个产品,再到负责整个支付平台的架构设计,包括业务架构、产品架构到应用架构,再到技术架构,是一个从点到面逐渐转型的过程,同样...

954
来自专栏PPV课数据科学社区

这七种最常见的Hadoop和Spark项目,你见过几种?

如果您的Hadoop项目将有新的突破,那么它必定与下边介绍的七种常见项目很相像。 有一句古老的格言是这样说的,如果你向某人提供你的全部支持和金融支持去做一些不同...

3255

扫描关注云+社区