一篇文章告诉你搜索引擎是如何工作的

Posted AINLP

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一篇文章告诉你搜索引擎是如何工作的相关的知识,希望对你有一定的参考价值。

搜索的普遍流程

搜索,推荐,广告三兄弟,整体的技术栈,流程框架是比较相似的。主要区别在于业务逻辑上的细微不同,但是可以肯定的是,搜索是三兄弟中最重要的。

搜索的整体流程同样是召回,排序两大块。但是除此之外,从一个完备的搜索引擎来看,要处理的事情远不止这么简单。总体来看,整个搜索可以看作这么几个阶段:

  • 数据预处理
  • query understanding
  • 召回模块
  • 排序模块
  • 后处理

数据预处理

对于输入 query 第一步需要预处理为方便操作的形式,以供后续的步骤可以有效进行。常见的操作有:

  • 无效内容的过滤:比如标点符号, emoji 表情,奇怪的字符等。
  • 简繁体转化。
  • 长度截断。
  • 数字转中文,中文数字转阿拉伯数字等。
  • 译名,别名等转化。
  • 禁搜词,禁搜内容等过滤。

在预处理后可以获得一个比较规整的 query 字段,接下来对相应的 query 进行逐步处理。

QU/query understanding

QU 部分的内容并非一个搜索引擎必须的,但却是一个想要做好做优秀的搜索引擎必须的。整个 QU 部分的效果会对召回和排序阶段都产生巨大影响,而后续的无论召回还是排序都很依赖这一步的结果。

QU 部分的技术栈基本都是 nlp 的一些常见操作,总体来说是比 nlp 要简单的,因为目的很清晰,用户的 query 肯定是希望得到某类结果。具体主要是以下内容:

  • 分词。这里也有常见的不同方法,大家可以针对性去了解对应的内容。
  • 纠错。比如搜索周杰论,我们可能需要给纠正成周杰伦。
  • 词干提取和词形还原。
  • 命名实体识别。获得每个词的实体类型。
  • 意图识别。分析用户的搜索意图,这个也要针对业务进行分析,比如电商搜索,音视频的搜索,网页搜素都不相同。

对于整个 QU 部分来说,为下游的工作起到一个至关重要的作用。这一步的效果在很大程度上决定了接下来的工作能做到的上限,如果你对 query 经过一系列处理,变得很差,那么后面的搜索步骤也无法取得好的效果。

召回模块

这里的方法其实主要是三类:

  • mysql,Redis 等 keyword 直接精确匹配。这种方法简单直接,但是局限性较大。
  • ElasticSearch,也就是我们经常听到的 ES,一些不靠搜索吃饭的公司,基本上用 ES 就可以完成绝大多数需求了。
  • 对 query 进行 embedding,然后利用诸如 BM25 等方案进行相似性召回。如果想要做个性化的推荐,就同时也可以考虑用户的历史行为作为 embedding 信息,一起加入进来。

排序模块

有的工程里面,会将排序再拆分粗排,精排,重排等等,但是本质上都是一样的,就是将召回拿到的内容,按照用户输入的 query 进行一个排序,将用户可能感兴趣的排到前面去。

其实这里的内容是大家经常看论文比较常见到的部分,各种模型和结构,各种奇思妙想,都基本上是以排序为主。

排序的核心其实主要就是三方面,一个是 query 的 embedding,一个是 item 的embedding,第三个是如何判断它们之间的相关性。大多数模型的工作也集中在这三点上。

但是就我的经验来看,实际应用中,简单的 LR 之类的模型,就可以解决百分之八九十的问题了。要想精益求精,才是接下来需要模型的时候。

其它内容

在搜索的过程中,一些其它辅助功能也很重要。首当其冲的是 suggest,对用户的输入进行提示和建议,这部分的内容也可以和纠错进行结合。

还有包括大数据分析的部分,毕竟搜索还是以 bad case 为驱动的,不像推荐,用户的容忍度比较高,对于 bad case 的分析和解决也很重要。

总结

这篇文章简要的介绍了一下一个搜索引擎需要做的工作,可能不接触这方面的人认为,搜索主要都在做排序算法方向的研究。通过这篇文章可以帮助大家了解到整个过程需要涉及到的技术,想要尝试做一些搜索方面工作的小伙伴也可以对照参考补充加技能点。

总的来说,搜索是一个对算法和工程能力都比较有要求的领域,无论是做算法还是做开发的朋友,都可以向这方面进行涉猎,也是一个很锻炼人的方向。

后面有机会我们再继续详细介绍相关的内容。


由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心一篇文章告诉你搜索引擎是如何工作的

欢迎加入搜索技术交流群
进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注搜索技术

推荐阅读












关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧

以上是关于一篇文章告诉你搜索引擎是如何工作的的主要内容,如果未能解决你的问题,请参考以下文章

让数据告诉你未来:Spark Streaming + Kudu + Impala构建预测引擎

用28张图告诉你什么是推荐系统

BPM技术Zeebe是一个用于微服务编排的工作流引擎。

白皮书解读搜索引擎的工作原理如何排序

✪​投稿|达观数据告诉你机器如何理解语言——中文分词技术

关键词推广公司告诉你怎样提高搜索引擎的评价分数