移动互联网时代搜索引擎依然是重要流量来源以及流量分发渠道,虽然比PC互联网时代权重有所降低。

各大电商淘宝、京东80-90%交易额也是由用户app内搜索、网站内搜索产生,个性化推荐系统本身也和搜索

引擎无论技术还是产品方方面面都与搜索引擎有着关联,我们每天也都和搜索引擎打着交道,搜索知识、

搜索问题、搜索新闻、了解世界,搜索引擎价值巨大,作为一个技术人应该了解他并不断深入了解他。

百度第三代搜索引擎架构

当我们使用搜索引擎检索信息时,输入想要查找检索词,点击回车,搜索引擎在1s左右时间返回十篇

文档。使用他对于有一定互联网经验人来说相当方便,但其背后发生了哪些事情,是不是如前台返回这样

简洁优雅呢,下面杉枫带着大家一起一看究竟。

输入搜索词后,这时搜索引擎会进行联想词推荐、相关搜索推荐。

搜索联想词目的是让搜索更加准确,推荐补全选项是搜索很多并且基于输入词前缀匹配补全,这样能

更精准满足用户检索需求,极大提升用户体验,在通用搜索引擎,以及电商淘宝、京东等电商搜索是标配。

搜素词还要进行分词,分词是搜索准确前提条件,试想如果你搜索“严守一把手机关了”分词成“严守、

严守一、一把、一把手、把手、手机、机关、关了”,这样就很难搜索到想要内容了,分词要识别人物

名称。这种情况属于分词中的歧义,是分词中比较难处理问题,需要不断优化算法以及进行定时人工干

预分词,来使分词准确。

再有就是新词发现,随着社会发展以及互联网快速发展,网民会不断创建词来表达新的含义事物,

因为有研究发现新词带来的分词问题是歧义的10倍左右,所以它是分词面临的最大挑战。“老铁”、“神马”、

“怼”等等需要分词系统要能不断及时对新词进行识别,准确分词。

搜索词短语识别,对于检索词要进行短语判断,如是短语类型检索,给出和搜索短语相关词多,

并且词之间顺序位置要近,形成短语关系为打分权重一个重要依据。

搜索同义词替换,有些时候搜索内容在搜索引擎收录不多,为了满足用户搜索需求,可以将搜索词

进行同义词近义词替换,可以见搜索引擎研究杂记在微信搜索“卓越网”实例,因“卓越网”数据在微信中

不多,微信将“卓越”替换成“优秀”进行搜索文章召回,虽然体验也没有特别好,但终究给用户更多选择。

怎么找到同义词也是好问题。方法一可以通过词典,金山、网易来寻找同义词别名建立同义词库,

再有就是百科中同义,又名等抽取同义词,还可以通过多个搜索词指向同一结果,说明它们有一定几率

是同义词。以及其他方法,后边会写一篇专门做同义词词库提取。

搜索词纠错,输入“刘的华”要能推荐出“刘德华”,“2084”要能推荐出“2048”,“我的后半生”要能推荐

出“我的前半生”,等等因为搜索引擎面向全部用户,很多用户不能熟练使用搜索引擎以及输入法,搜索

词纠错必不可少。

上边是列举出搜索词分词、搜索联想、搜索纠错等一系列过程基本上完成对于搜索词处理。

搜索引擎本身是个分布式系统,用户点击搜索提交搜索词后,搜索引擎收到搜索词后,在多个节点

根据倒排索引进行召回,会根据用户输入进行分词后召回,召回逻辑根据分词、同义词、短语多个维度

进行召回,召回还要包含交集关系(比如搜索“推荐系统架构”)那么包含在“推荐系统”、“架构”两个词倒

排索引下文档取交集。

用户检索内容的分词,少词下文档有几千,多的几万、几十万、几百万,这时取哪些文章进行召回

就很关键,因为磁盘IO很慢不可能实现对于几百万文章全部召回。这时就需要做两种选择,一种是离线

排序根据PageRank、网站权重、作者权重等多个维度离线打分来标识文章质量对文章进行离线排序,

搜索引擎实时召回文章时就只需几百几千个进行召回,几百、几千文章召回很好实现的,性能也没有问

题。一种是离线进行一定排序,搜索引擎实时召回实时根据F-IDF、BM25、其他特征进行打分高分存入

带返回结果集合,设置超时时间到了超时时间停止进行召回,对已存在召回集进行返回。

短语召回集要召回,包含多个词并且多个词在文章中位置近的权重高。

多于召回数据要根据TF-IDF、BM25、用户曝光后点击、跳出率等等多个特征进行打分排序,排序后

进行返回,当下搜索引擎特征因素会有上百甚至几百,但核心目的是为了找到最满足用户需求文章进行返回。

想做推荐引擎想要做好推荐引擎必须研究搜索引擎,因为他俩有千丝万缕关系,研究好了一个对于做

另一个有很多启发。

这篇是篇原理,后边会分享下百度第三代搜索引擎架构,第二代搜索引擎架构有hadoop开源存储引

擎加上c++搜索引擎构成,更新数据需要2-3周实时性差,第三代搜索引擎全部由c++开发打造,抓取更新

数据能到分钟级,性能提升三个数量级是质的飞跃,敬请期待!

微信扫码关注:

扫码关注公众号

转载于:https://www.cnblogs.com/freedommovie/p/7803468.html

搜索引擎中输入检索词到返回十条结果,发生了哪些事情相关推荐

  1. 输入url到页面加载都发生了什么事情?(一道软件测试面试题)

    文章首发于公众号:软件测试er 输入url到页面加载都发生了什么事情?这是一道软件测试面试题,且相关知识其实还有多种问法: Question 1请讲一下tcp三次握手 OK等你把这个记好了,下次面试: ...

  2. 当你在浏览器中输入 google.com 后按下回车发生了什么?

    按下"g"键 接下来的内容介绍了物理键盘和系统中断的工作原理,但是有一部分内容却没有涉及.当你按下"g"键,浏览器接收到这个消息之后,会触发自动完成机制.浏览器 ...

  3. 面试必问系列之在浏览器中输入URL后到网页显示 其间发生了什么?

    文章目录 @[TOC](文章目录) 1:解析URL网址,从而生成发送给Web服务器的Http请求信息 2:真实地址查询-----(DNS域名解析) 3:调用协议栈 4:可靠的传输 TCP 5:远程定位 ...

  4. hexo高阶教程:想让你的博客被更多的人在搜索引擎中搜到吗?

    本文首发在我的个人博客:http://cherryblog.site/,欢迎大家前去参观,顺便求fork,么么哒~ 上一次在掘金上发表的hexo高阶教程:hexo高阶教程next主题优化之加入网易云音 ...

  5. 分析输入url到页面返回的过程(查询返回过程)

    最近看到一个题目,是当在浏览器中输入一个url后回车,后台发生了什么?比如输入url后,你看到了百度的首页,那么这一切是如何发生的呢? 这个问题之前.最近.我想以后肯定还会被问到,或者问到这样的题目, ...

  6. python利用Trie(前缀树)实现搜索引擎中关键字输入提示(学习Hash Trie和Double-array Trie)...

    python利用Trie(前缀树)实现搜索引擎中关键字输入提示(学习Hash Trie和Double-array Trie) 主要包括两部分内容: (1)利用python中的dict实现Trie: ( ...

  7. Java黑皮书课后题第8章:*8.27(列排序)用下面的方法实现一个二维数组中的列排序。返回新数组,且原数组保持不变。编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵

    *8.27(列排序)用下面的方法实现一个二维数组中的列排序.返回新数组,且原数组保持不变.编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵 题目 题目描述与运行示例 破 ...

  8. Java黑皮书课后题第8章:*8.26(行排序)用下面的方法实现一个二维数组中的行排序。返回新数组,且原数组保持不变。编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵

    *8.26(行排序)用下面的方法实现一个二维数组中的行排序.返回新数组,且原数组保持不变.编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵 题目 题目描述与运行示例 破 ...

  9. 编写一个C程序,实现以下功能:编写一个常规的函数和一个递归函数,两个函数均能将输入的一个字符串以按反序形式的字符串作为返回值。在main函数中输入一行字符串,分别调用两个函数,输出反序后的字符串。

    题目要求: 编写一个C程序,实现以下功能:编写一个常规的函数和一个递归函数,两个函数均能将输入的一个字符串以按反序形式的字符串作为返回值.在main函数中输入一行字符串,分别调用两个函数,输出反序后的 ...

最新文章

  1. 沙盒化容器:是容器还是虚拟机
  2. 执行RF测试只生成output.xml文件,不生成log和report文件
  3. 动态规划 dp01 西瓜分堆问题 c代码
  4. 《算法竞赛入门经典》—— 5.2.6 栈、队列与优先队列
  5. 知道这些面试技巧,让你的测试求职少走弯路
  6. XCTF-Web-高手区-supersqli
  7. [蓝桥杯][2016年第七届真题]密码脱落(记忆化搜索)
  8. centos8调整分辨率_Hyper-V 设置 CentOS 8 文本模式下分辨率
  9. jeb反编译导出Java工程_Android 反编译(JEB.android.decompiler)
  10. liunx 系统下面安装jdk
  11. word如何删除空行和全角空格_word中删除全角空格和空行
  12. python 求最大内切圆和最小外接圆问题
  13. autoCAD 创建和编辑AutoCAD图元
  14. 笔记本没有计算机和网络怎么回事,华为笔记本连wifi无internet怎么办?华为笔记本电脑怎么连不上网?...
  15. 技术从业者的未来(2)
  16. Qt三维图表模块 -- Data Visualization 学习记录
  17. mysql vacuum_PostgreSQL中快速对系统表实现vacuum full
  18. mysql创建学生答题系统_jsp+ssm+mysql实现的学生在线考试系统
  19. php100以内质数求和,100以内的质数_PHP质数计算三种方法 php求100以内的质数
  20. JavaScript浏览器对象模型BOM

热门文章

  1. 修改UrlRewrite以对域名进行重写,即实现二级或多级域名 【转】
  2. Windows10 下安装 Nexus OSS 3.xx
  3. matlab预测高铁客运量,公路客运量的回归分析和研究预测
  4. 2-2、戴尔DELL 730XD开机自检卡住
  5. RISC-V (CH32V103)与Cortex-M3内核(CH32F103)单片机中断延时测评
  6. 细数2017中国CRM市场(三):日渐爆发的用户需求
  7. 华为9x计算机在哪里,华为荣耀9xOTG设置在哪里
  8. kubeadm部署kubernetes高可用(三主三从)
  9. [附源码]java毕业设计宠物商城
  10. QT(嵌入式开发)期末综合实验(打地鼠游戏)