7 胡慧超

网易 - 资深工程师

我要认证

开放、平等、协作、分享; 现代互联网精神。

等级
TA的排名 1w+

360 搜索的百亿级网页搜索引擎架构实现

目前 360 搜索每日抓取的网页数量高达十亿,已经收录的网页基本上是万亿级别的网页集合,实际可检索的网页是在一个百亿级别的网页集合里。目前 360 搜索的单日流量是亿级 pv。我们目前的在线、离线机群有几万台服务器来维护这么大量级的计算。主要内容我今天的分享的主要会侧重于百亿级网站搜索引擎架构的一些核心模块的理论设计。本次分享内容分为以下四个模块:如何设计搜索引擎 百亿级网页计算关键技术 网页索引组织模式 网页检索和相关性01 如何设计搜索引擎首先从如何设计一个搜索引擎讲起。

2020-06-24 11:22:41

搜索引擎相关度算法 -BM25 JAVA实现

bm25 是一种用来评价搜索词和文档之间相关性的算法,它是一种基于概率检索模型提出的算法。它的出现主要是解决TF-IDF算法中 TF的影响可无限增大的不足,本质上BM25是基于TF-IDF并做了改进的算法。如图所示,传统的TF-IDF算法中 词频的影响程度是无限增大的,换而言之就是关键词出现的越频繁,TF-IDF相关度就越高。稍微有点简单粗暴;而BM25算法就是让词频的影响到达一定程度后趋于收敛,相比而已更加符合自然语言相关程度的实际逻辑。参考:《搜索中的权重度量利器: TF-IDF和BM.

2020-05-28 21:55:07

ThreadLocal内存溢出(OOM)的原因

ThreadLocal是Java提供的一个线程安全类,其原理是每个线程都拥有各自的变量内存副本。其实就是每个线程Thread里都有一个ThreadLocalMap类,用于存储变量值。更新、删除操作时,都是操作各自线程里的hreadLocalMap类,互不影响,从而达到的线程安全ThreadLocal经常用于一次调用的上下文储存场景,例如一次调用的token、traceId,在调用的各个阶段都有可能用到,但是每次调用的值都不一样,这时ThreadLocal就派上用场了但是如果ThreadLocal使用不当

2020-05-19 16:35:15

知乎推荐系统的实践及重构之路

1、背景知乎从问答起步,已逐步成长为一个大规模的综合性知识内容平台,截止目前,用户数突破 2.2 亿,有超过 3000 万的问题被提出,并获得超过 1.3 亿个回答。同时,知乎内还沉淀了数量众多的优质文章、电子书以及其它付费内容。因此,在链接人与知识的路径中,知乎存在着大量的推荐场景。粗略统计,目前除了首页推荐之外,我们已存在着 20 多种推荐场景;并且在业务快速发展中,不断有新的推荐业务...

2019-02-21 11:07:00

Java SSM框架相关基础整理

一、Spring面试题1、Spring 在ssm中起什么作用?Spring:轻量级框架作用:Bean工厂,用来管理Bean的生命周期和框架集成。两大核心:①. IOC/DI(控制反转/依赖注入) :把dao依赖注入到service层,service层反转给action层,Spring顶层容器为BeanFactory。②. AOP:面向切面编程 2、Spring的事务?编...

2019-01-16 17:28:59

技术交流,扫描关注技术公众号!

精选各领域互联网技术, 推送前后端、算法、人工智能领域优质技术文章!! 本公众号由阿里、网易、美团等团队组成精选各领域互联网技术, 推送前后端、算法、人工智能领域优质技术文章!! 本公众号由阿里、网易、美团等团队组成。...

2018-11-20 20:40:13

分布式理论和系统架构设计

CAP理论分布式锁分布式一致性分布式事务负载均衡微服务 一  CAP和BASE理论1.1  CAP理论        分布式领域中存在CAP理论,且该理论已被证明:任何分布式系统只可同时满足两点,无法三者兼顾。很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个...

2018-08-17 11:58:36

Redis特性和性能调优

概要在分布式里面满足CP (一致性、分区容错性)。性能:对于单纯只有IO操作来说,单线程可以将速度优势发挥到最大,但是Redis也提供了一些简单的计算功能,比如排序、聚合等,对于这些操作,单线程模型实际会严重影响整体吞吐量,CPU计算过程中,整个IO调度都是被阻塞住的。一  Redis和Memcached对比1:数据类型:Memcached单个key-value大小有限,一个val...

2018-08-17 11:37:18

贝叶斯公式

贝叶斯分类 是基于朴素贝叶斯定理分类器,其计算过程是在训练阶段的时候,先计算每个分类的先验概率P(A),和各个分类下面特征属性的条件概率P(B|A)。预测的过程 ,反推特征-分类的条件概率(A|B)。取最大概率作为分类结果。       贝叶斯定理:已知A(分类)的条件概率,B(某个特征)在A发生后的条件概率,求A在B发生后的条件概率 P(A|B)=P(B|A)*P(A)/P(B)其实...

2018-08-17 11:09:37

BST、AVL、B-TREE、B+TREE、红黑树

1:BST 二叉搜索树(左子树值<=根值<=右子树)1.1 定义1 首先它也是一个二叉树,故满足递归定义;2 其次每个节点只存在一个值;3 需满足左子树值<=根值<=右子树,BST的中序遍历必定是严格递增的。在实际场景中,用的最多的是二叉平衡树,一般操作的执行时间福再度为O(lgn)。2.但若是一棵具有n个结点的线性链,则此些操作最坏情况运行时间...

2018-08-04 10:19:05

从分布式系统设计看Elasticsearch集群及数据结构

一: 概述es本质上就是由分布式思想+lucene组合而成,因为lucene的存在,它比一般的分布式系统会稍微复杂一点,es采取的分布式思想是分片+副本+去中心化。es持久化的方式是:副本索引文件+translog文件,es默认配置下,为了比较好的速度,选择了性能,是可能丢数据的(5s)。redis aof是1s。和redis一样,在性能和可靠性中选择,如果选择直接写入磁盘,es写性能会损...

2018-08-04 10:02:55

倒排索引查询原理

Lucene 查询过程在lucene中查询是基于segment。每个segment可以看做是一个独立的subindex,在建立索引的过程中,lucene会不断的flush内存中的数据持久化形成新的segment。多个segment也会不断的被merge成一个大的segment,在老的segment还有查询在读取的时候,不会被删除,没有被读取且被merge的segement会被删除。这个过程类似...

2018-08-03 13:58:02

倒排、空间、BTREE、HASH索引

倒排索引数据结构分为词表和倒排表两部分。词表:FST。类似于字典树(适合英文),共享前缀,内存消耗小; https://blog.csdn.net/njpjsoftdev/article/details/54015485倒排表:文档号集合。数据压缩+有序链表+跳表    https://blog.csdn.net/hu948162999/article/details/79042439 ...

2018-07-31 20:29:24

Lucene简介和索引原理

基于Lucene检索引擎我们开发了自己的全文检索系统,承担起后台PB级、万亿条数据记录的检索工作,这里向大家分享下Lucene底层原理研究和一些优化经验。   从两个方面介绍:   1. Lucene简介和索引原理   2. Lucene优化经验总结1. Lucene简介和索引原理  该部分从三方面展开:Lucene简介、索引原理、Lucene索引实现。1.1 Lucene简介...

2018-07-31 20:00:59

红黑树

介绍红黑树是一个平衡的二叉树,但不是一个完美的平衡二叉树。虽然我们希望一个所有查找都能在~lgN次比较内结束,但是这样在动态插入中保持树的完美平衡代价太高,所以,我们稍微放松逛一下限制,希望找到一个能在对数时间内完成查找的数据结构。这个时候,红黑树站了出来。 阅读以下需要了解普通二叉树的插入以及删除操作。 红黑树是在普通二叉树上,对没个节点添加一个颜色属性形成的,同时整个红黑二叉树需要同时满足一下...

2018-05-31 11:27:43

美团搜索排序设计方案

一、线上篇随着业务的发展,美团的商家和团购数正在飞速增长。这一背景下,搜索排序的重要性显得更加突出:排序的优化能帮助用户更便捷地找到满足其需求的商家和团购,改进用户体验,提升转化效果。和传统网页搜索问题相比,美团的搜索排序有自身的特点——90%的交易发生在移动端。一方面,这对排序的个性化提出了更高的要求,例如在“火锅”查询下,北京五道口的火锅店A,对在五道口的用户U1来说是好的结果,对在望京的用户...

2018-05-24 16:56:14

美团旅游召回系统设计

背景美团点评作为最大的生活服务平台,有丰富的品类可供用户选择,因此搜索这个入口对各业务的重要性不言而喻,除了平台搜索外,业务搜索系统的质量和效果对用户体验、商家曝光、平台交易也有着关键作用。相对美团点评平台的O2O检索,旅游搜索系统主要面临以下几点挑战:本异地差异大。在本地生活场景中用户的搜索需求往往集中在本城市内,而在旅游场景特别是行前场景用户会先搜索异地的POI(门店),比如常驻城市为北京的用...

2018-05-24 16:54:40

如何合理的设置线程数

 一、需求缘起Web-Server通常有个配置,最大工作线程数,后端服务一般也有个配置,工作线程池的线程数量,这个线程数的配置不同的业务架构师有不同的经验值,有些业务设置为CPU核数的2倍,有些业务设置为CPU核数的8倍,有些业务设置为CPU核数的32倍。“工作线程数”的设置依据是什么,到底设置为多少能够最大化CPU性能,是本文要讨论的问题。 二、共性认知在进行进一步深入讨论之前,先以提问的方式就...

2018-04-11 14:35:55

从Elasticsearch集群及数据层架构,看分布式系统设计

分布式系统类型多,涉及面非常广,不同类型的系统有不同的特点,批量计算和实时计算就差别非常大。这篇文章中,重点会讨论下分布式数据系统的设计,比如分布式存储系统,分布式搜索系统,分布式分析系统等。我们先来简单看下Elasticsearch的架构。一、Elasticsearch集群架构Elasticsearch是一个非常著名的开源搜索和分析系统,目前被广泛应用于互联网多种领域中,尤其是以下三个领域特别突...

2018-03-02 19:05:59

elasticsearch ik配置动态同义词

使用环境elasticsearch5.1.1kibana5.1.1同义词插件5.1.1安装插件下载对应的elasticsearch-analysis-dynamic-synonym-5.1.1.zip, 解压到本地的elasticsearch/plugins目录下, 重新启动es第一种方式本地文件说明:对于本地文件:主要通过文件的修改时间戳(Modify time)来判断是否要重新加载在elast...

2018-03-01 18:00:25

查看更多

勋章 我的勋章
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。