“搜索”的原理,架构,实现,实践,面试不用再怕了(值得收藏)!!!
(7)有序荟萃求交集的要领有:
画外音:口试应该够用了。 大部门工程师未必打仗过“搜刮内核”,但互联网营业,根基会涉及“检索”成果。照旧以58同城的帖子营业场景为例,帖子的问题,帖子的内容有很强的用户检索需求,在营业、流量、并发量慢慢递增的各个阶段,应该怎样实现检索需求呢? 原始阶段-LIKE 创业阶段,经常用这种要领来快速实现。 数据在数据库中也许是这么存储的:
满意问题、内容的检索需求可以通过LIKE实现:
这种方法确实可以或许快速满意营业需求,存在的题目也显而易见:
低级阶段-全文索引 怎样快速进步服从,支持分词,并对原有体系架构影响尽也许小呢,第一时刻想到的是成立全文索引:
行使match和against实现索引字段上的查询需求。 全文索引可以或许快速实现营业上分词的需求,而且快速晋升机能(分词后倒排,至少不要全表扫描了),但也存在一些题目:
中级阶段-开源外置索引 为了办理全文索的范围性,当数据量增进到大几百万,万万级别时,就要思量外置索引了。外置索引的焦点思绪是:索引数据与原始数据疏散,前者满意搜刮需求,后者满意CURD需求,通过必然的机制(双写,关照,按期重建)来担保数据的同等性。 原始数据可以继承行使Mysql来存储,外置索引怎样实验?Solr,Lucene,ES都是常见的开源方案。个中,ES(ElasticSearch)是今朝最为风行的。 Lucene虽好,隐藏的不敷是:
为了改进Lucene的各项不敷,办理方案都是“封装一个接口友爱的处事,屏障底层伟大性”,于是有了ES:
今朝,快狗打车行使ES作为焦点的搜刮处事,实现营业上的种种搜刮需求,个中:
以是,ES完万能满意10亿数据量,5k吞吐量的常见搜刮营业需求。 高级阶段-自研搜刮引擎 当数据量进一步增进,到达10亿、100亿数据量;并发量也进一步增进,到达每秒10万吞吐量;营业本性也慢慢增进的时辰,就必要自研搜刮引擎了,定制化实现搜刮内核了。 到了定制化自研搜刮引擎的阶段,超大数据量、超高并发量为计划重点,为了到达“无穷容量、无穷并发”的需求,架构计划必要重点思量“扩展性”,力图做到:增进呆板就能扩容(数据量+并发量)。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |