搜索技术的应用越来越广,掌握搜索技术或者针对搜索技术有了解的人也越来越多。最近接触了不少搜索人才,从对搜索的了解程度来讲,大体分为几种不同的阶段。
第一个阶段是使用开源的单机搜索系统(最常见的是lucene),在其之上加入broker和Cache,在其之上在构造应用。这个阶段一般对lucene的工作原理以及基本的搜索原理会略有了解,甚至还是有不少看过lucene的源码的。这也是大多数人接触搜索引擎的最方便和最常见的方式。但是这种系统一般只适用于较少量数据(千万级),其并发性能一般也只能达到百万级。好处是开发周期短,这一类的人才在市场上也容易找到,再加上一些好的idea,简单的数据挖掘方法(分类、聚类、协同过滤、用户行为分析等)就可以很快做出原型系统,满足一些小公司的前期创业阶段的技术要求。
第二个阶段是自行开发的垂直领域内的搜索,这个阶段一般数据量会达到上亿或者几亿,如果用开源系统,其性价比已经不能满足要求,需要的服务器会超出承受能力,所以就会进行自己开发搜索系统,这种系统大都是针对内存的系统。这个阶段的人才会对搜索引擎的原理有较深的理解,可以自行开发简单的搜索应用。这类人才有很多是从第一个阶段发展过来的,他们会对搜索的各个方面都有所了解,包括切词、索引的建立、更新、应用的搭建、broker系统、cache系统、简单的排序策略等等。对于大部分搜索系统来讲,这部分人才都可以完成对系统设计和开发。
前两个阶段,其数据来源一般也是定向的抓取,基于模板的内容分析抽取,对服务的稳定性要求也没有那么高,更新无法做到无缝更新。
第三个阶段是针对网页搜索(通用搜索)的人才,这个阶段的人才比较少,针对整个网页搜索都有了解的人就更少了。主要集中于百度、谷歌、搜狗等大的搜索公司。
了解通用搜索的人主要集中于大型的搜索公司,有以下几个原因:一是其它公司很难有做网页搜索的实力,也就很难有这种工作经历。没有经历过这样的挑战就很难想像出其中的难度。二是即使有做过,但是很难拿到用户的反馈,而缺乏用户反馈数据,网页搜索引擎就象缺了一条腿。三是做网页搜索的人一般比较多,包括百度、谷歌等公司,大部分人也只能从事网页搜索中较小的一个部分,针对网页搜索整体了解和思考都是比较少的。
这个阶段的人才会对通用搜索遇到的挑战有一定的解决能力。包括如何能够在有限的资源内做到尽快的返回用户的结果(性能指标),如何做到第一时间更新互联网的热点并且能够展示到用户面前(时新性指标),如何能够尽可能多的收录互联网的有用页面(覆盖率指标),如何能够把用户最感兴趣的结果放到最前面(相关性指标),还有很多用户可用性、以及显相关的指标。这些是评价通用搜索的最主要的指标,每个指标都会有很大的挑战。这个阶段的人才一般最少会对其中的部分指标有自己解决的办法。
第四个阶段是对网页搜索系统的设计能力和架构能力都很强的人才,他们会针对搜索系统的除暴露给用户的表现部分有很深的理解和自己的解决方案外,还包括跨机房解决方案,基础存储运算在搜索中的应用,高可用和灵活性的相关性实验支持,高效灵活的数据挖掘平台、接口及解决方案,系统的高度可扩展性和柔性服务能力等。这类人才在市场上凤毛麟角,大家都在争取。
分享到:
相关推荐
在项目初期阶段,系统架构师就需要参与到项目的规划中来,对系统的整体框架进行设计。 #### 主要职责 1. **需求分析**:理解业务需求和技术需求,确定系统的目标和范围。 2. **架构设计**:根据需求设计合理的系统...
他的经历可以分为几个阶段,每个阶段都为其成为一位出色的架构师奠定了坚实的基础。 **阶段一:打基础** 在五八同城工作期间,沈剑涉足了多个技术领域,包括即时通讯(11年)、支付及信息系统(13年)、智能推荐...
网站架构师必须知道的知识 一、大型网站演化过程中的网站架构扩展 * 初始阶段:一台服务器,后续增加缓冲服务器和分布式文件系统和分布式数据库系统。 * 对数据库进行主写从读的设计,使用 NoSQL 和搜索引擎技术。...
- 架构师需要考虑的方面包括但不限于数据安全、系统冗余、负载均衡、数据备份与恢复、服务的高可用性和灾难恢复计划。 2. 技术选型 - PPT中提到了Golang、AngularJS、Node.js等技术栈,这些都是互联网公司常用的...
作为一位架构师,深入理解经典论文是非常重要的,因为这些论文往往揭示了行业内的最佳实践和创新思想。以下是一些可能包含在"所有架构师都应该至少读上两遍的10篇论文-系统架构"中的关键知识点: 1. **论文1:ACM ...
### JAVA架构师知识整理 #### 一、JVM与内存管理 **1.1 JVM基础知识** JVM(Java Virtual Machine)即Java虚拟机,是一种能够执行特定字节码的虚拟机,它允许Java代码在任何支持JVM的平台上运行而无需重新编译,...
在IT行业中,软件设计师和架构师是两个至关重要的角色,他们承担着软件开发过程中的核心任务。本资源包集合了针对这两个职位的学习资料,旨在帮助备考者或对这些领域感兴趣的人提升专业技能。 首先,软件设计师是...
本教程是私塾在线推出的高级Java软件架构师实战培训系列,涵盖了从第134讲到141讲的内容,总计148讲。这个阶段的学习重点在于通过实际操作提升学员对Java软件架构设计和实施的理解与技能。教程中特别涉及了MogileFS...
■Java架构师之路 ■软件开发过程 ■软件项目管理 相信这篇文章能够帮助那些想要进入Java世界,或者已经身在Java世界,却感前途迷茫的同志们,理清学习路线,少走弯路。 另外,本文所列书籍,均可找到相应的...
在IT行业中,架构师的角色至关重要,他们负责设计和规划软件系统的整体结构,确保系统的稳定性、可扩展性和可维护性。以下是一些针对架构师的面试题及其涉及的知识点: 1. **Struts、Spring、Hibernate 开源框架的...
【架构师面试题参考】 1. **Struts, Spring, Hibernate 开源框架的历史局限性与适用场景** Struts 是基于请求驱动的框架,在富客户端(如 AJAX 和 Flash)日益普及的情况下,它显得较为落后,因为无法很好地处理...
例如,移动互联网的增长率为20.3%,电子商务的增长率为64.3%,网络经济的增长率为45.0%,搜索引擎的增长率为67.6%,网络视频的增长率为41.6%,品牌网络广告的增长率为45.8%,网上招聘的增长率为22.3%,网络游戏的...
阶段,它将是关于“如何成为一名软件架构师”主题的最终指南。 我们走吧。 哦,我几乎忘记了:做贡献,我有很多东西要学习(例如,正确的书面英语:)。 阶段1 (别担心,第 2 阶段不会像这样) 播客 设计数据密集型...
在软件开发领域,架构师的角色至关重要,他们负责设计和规划系统的整体结构,确保系统的可扩展性、性能和稳定性。以下是一些基于给出的面试题的知识点解析: 1. **SSH框架的历史局限性**:Struts、Spring和...
最后是“除”阶段,此时架构师需要进行抽象和平衡,确保架构的持续进化与优化。 架构的定义在不同语境下略有差异,但一般来讲,软件架构主要由逻辑视图、设计视图和部署视图等不同维度组成。架构的重要特性在于它...
架构师需要具备实战经验,并了解从单体架构到微服务架构的各个阶段所面临的挑战和解决方案。 架构演进过程中,企业面临的关键问题及解决方法包括: 1. 单体架构问题:通过绘制架构图谱,了解当前架构所处阶段,并...
淘宝的架构师们在面对各种技术挑战时,通过持续的技术创新和改进,确保了淘宝系统的稳定性和扩展性,以支撑其庞大而复杂的电商生态系统。正是这种不断演进和创新的技术架构,支撑了淘宝业务的飞速发展和日益增长的...
- **即席化**:通过搜索引擎等技术,支持用户即时定制并快速获取所需数据。 ### 六、观点分享 - **结合事件看数据**:将数据与具体业务场景相结合,更好地理解数据背后的意义。 - **别听TA的,给TA想要的**:了解...
【系统架构设计师试题详解】 系统架构设计师是信息技术领域中的高级专业人才,负责设计和规划复杂的软件系统架构。2017年下半年的系统架构设计师试题涵盖了上午试题、下午试题以及论文题,全面考核了考生在系统架构...
《系统架构设计师教程(第4版)》是针对国家软考认证的一项专业教材,主要针对的是希望成为系统架构设计师的IT专业人士。这本书以其详尽的内容和实用的指导,旨在帮助读者掌握系统架构设计的核心概念、技术和实践。...