107

搜索引擎中输入检索词到返回十条结果,整个过程发生了什么

 6 years ago
source link: http://mp.weixin.qq.com/s/1KTCYr042xp2oovwwJ3fVg
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

搜索引擎中输入检索词到返回十条结果,整个过程发生了什么

Original 杉枫 探索互联网 2017-11-08 00:39 Posted on

T002R90x90M000002MAeob3zLXwZ.jpg

       移动互联网时代搜索引擎依然是重要流量来源以及流量分发渠道,虽然比PC互联网时代权重有所降低。各大电商淘宝、京东80-90%交易额也是由用户app内搜索、网站内搜索产生,个性化推荐系统本身也和搜索引擎无论技术还是产品方方面面都与搜索引擎有着关联,我们每天也都和搜索引擎打着交道,搜索知识、搜索问题、搜索新闻、了解世界,搜索引擎价值巨大,作为一个技术人应该了解他并不断深入了解他。

Image

百度第三代搜索引擎架构

       当我们使用搜索引擎检索信息时,输入想要查找检索词,点击回车,搜索引擎在1s左右时间返回十篇文档。使用他对于有一定互联网经验人来说相当方便,但其背后发生了哪些事情,是不是如前台返回这样简洁优雅呢,下面杉枫带着大家一起一看究竟。

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

Image

       搜索联想词目的是让搜索更加准确,推荐补全选项是搜索很多并且基于输入词前缀匹配补全,这样能更精准满足用户检索需求,极大提升用户体验,在通用搜索引擎,以及电商淘宝、京东等电商搜索是标配。

       搜素词还要进行分词,分词是搜索准确前提条件,试想如果你搜索“严守一把手机关了”分词成“严守、严守一、一把、一把手、把手、手机、机关、关了”,这样就很难搜索到想要内容了,分词要识别人物名称。这种情况属于分词中的歧义,是分词中比较难处理问题,需要不断优化算法以及进行定时人工干预分词,来使分词准确。

       再有就是新词发现,随着社会发展以及互联网快速发展,网民会不断创建词来表达新的含义事物,因为有研究发现新词带来的分词问题是歧义的10倍左右,所以它是分词面临的最大挑战。“老铁”、“神马”、“怼”等等需要分词系统要能不断及时对新词进行识别,准确分词。

       搜索词短语识别,对于检索词要进行短语判断,如是短语类型检索,给出和搜索短语相关词多,并且词之间顺序位置要近,形成短语关系为打分权重一个重要依据。

        搜索同义词替换,有些时候搜索内容在搜索引擎收录不多,为了满足用户搜索需求,可以将搜索词进行同义词近义词替换,可以见搜索引擎研究杂记在微信搜索“卓越网”实例,因“卓越网”数据在微信中不多,微信将“卓越”替换成“优秀”进行搜索文章召回,虽然体验也没有特别好,但终究给用户更多选择。

       怎么找到同义词也是好问题。方法一可以通过词典,金山、网易来寻找同义词别名建立同义词库,再有就是百科中同义,又名等抽取同义词,还可以通过多个搜索词指向同一结果,说明它们有一定几率是同义词。以及其他方法,后边会写一篇专门做同义词词库提取。

       搜索词纠错,输入“刘的华”要能推荐出“刘德华”,“2084”要能推荐出“2048”,“我的后半生”要能推荐出“我的前半生”,等等因为搜索引擎面向全部用户,很多用户不能熟练使用搜索引擎以及输入法,搜索词纠错必不可少。

Image

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

        搜索引擎本身是个分布式系统,用户点击搜索提交搜索词后,搜索引擎收到搜索词后,在多个节点根据倒排索引进行召回,会根据用户输入进行分词后召回,召回逻辑根据分词、同义词、短语多个维度进行召回,召回还要包含交集关系(比如搜索“推荐系统架构”)那么包含在“推荐系统”、“架构”两个词倒排索引下文档取交集。

        用户检索内容的分词,少词下文档有几千,多的几万、几十万、几百万,这时取哪些文章进行召回就很关键,因为磁盘IO很慢不可能实现对于几百万文章全部召回。这时就需要做两种选择,一种是离线排序根据PageRank、网站权重、作者权重等多个维度离线打分来标识文章质量对文章进行离线排序,搜索引擎实时召回文章时就只需几百几千个进行召回,几百、几千文章召回很好实现的,性能也没有问题。一种是离线进行一定排序,搜索引擎实时召回实时根据F-IDF、BM25、其他特征进行打分高分存入带返回结果集合,设置超时时间到了超时时间停止进行召回,对已存在召回集进行返回。

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

        多于召回数据要根据TF-IDF、BM25、用户曝光后点击、跳出率等等多个特征进行打分排序,排序后进行返回,当下搜索引擎特征因素会有上百甚至几百,但核心目的是为了找到最满足用户需求文章进行返回。

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

        这篇是篇原理,后边会分享下百度第三代搜索引擎架构,第二代搜索引擎架构有hadoop开源存储引擎加上c++搜索引擎构成,更新数据需要2-3周实时性差,第三代搜索引擎全部由c++开发打造,抓取更新数据能到分钟级,性能提升三个数量级是质的飞跃,敬请期待!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK