【王树森搜索引擎技术】概要04:搜索引擎的链路(查询词处理、召回、排序)

搜素引擎的链路

  • 分为查询词处理,召回,排序

查询词处理

分词

  • 分词:冬季卫衣推荐 -> 冬季 / 卫衣 / 推荐
  • 为什么要做分词:文本召回根据词在倒排索引中检索文档
  • 倒排索引的 key 大多是 冬季,卫衣, 推荐这样的常用词,数量不大
  • 加入倒排索引的 key 是冬季卫衣推荐这样的词,倒排索引会过于巨大

词权重

  • 冬季卫衣推荐 -> 冬季 / 卫衣 / 推荐,三个词同等重要吗"?可以丢弃某个词吗?
  • 词权重:卫衣>冬季>推荐
  • 为什么要计算词权重?如果查询词太长,没有文档可以同时包含其中的所有词,需要丢弃不重要的词
  • 计算查询词与文档相关性时,可以用词权重做加权

类目识别

  • 每个平台都有各自的多级类目体系
    • 一级类目:美妆
    • 二级类目:彩妆,护肤,美甲,香水
  • 用NLP技术实别文档,查询词的类目
    • 在文档发布或被爬虫获取到时,离线识别文档类目
    • 在用户做搜索时,在线实别查询词的类目
    • 召回模型,排序模型将文档,查询词类目作为目的特征

查询词意图识别

  • 时效性意图:查询词对文档"新"的需求,召回和排序均需要考虑文档的年龄
  • 地域性意图:召回和排序不止需要文本相关性,还需要结合用户定位地点,查询词提及的地点,文档定位的地点
  • 用户名意图:用户想要找平台中某位用户,应当检索用户名库,而非检索文档库
  • 求购意图:用户可能想要购买商品,同时在文档库,商品库中做检索
  • 还有很多别的意图,一个查询可能包含多个意图

查询词改写

  • 用户输入查询 q,算法将其改写为多个查询词
  • 查询词改写有什么用?
  • 第一:解决语义匹配,但文本不匹配的问题
  • 解决召回文档数量过少的问题

召回

  • 给定查询词 q,从文档库中快速检索数万篇可能与 q 相关的文档 d
  • 文本召回:借助倒排索引,匹配 q 中的词和 d 总的词
  • 向量找回:将 q 和 d 分别表征为向量 x q x_q xq 和 z d z_d zd ,给定 x q x_q xq ,查找相似度高的 z d z_d zd
  • KV召回,对于高频查询词 q, 离线建立 q->List(d) 这样的 key-value 索引。线上直接读取索引,获取 q 相关的文档

文本召回

  • 离线处理文档,建立倒排索引。
  • 给定词 t,可以快速找到所有包含 t 的文档
  • 给定查询词 q,做分词得到多个词 t 1 . ⋅ ⋅ ⋅ . t k t_1. ···. t_k t1.⋅⋅⋅.tk
  • 对于每个词 t i t_i ti ,检索倒排索引,得到文档的集合 D i D_i Di
  • 求 k 个集合的交集,作为文本召回的结果
  • 交集可能很小,甚至为空。因此需要对 q 做丢词,改写

向量召回

KV召回

排序

  • 前面的内容,相关性最重要

相关推荐
三天不学习14 小时前
JiebaAnalyzer 分词模式详解【搜索引擎系列教程】
前端·搜索引擎·jiebaanalyzer
三天不学习14 小时前
Lucene.Net FSDirectory 和 RAMDirectory 的区别和用法 【搜索引擎系列教程】
搜索引擎·.net·lucene
LuckyRich11 天前
【boost搜索引擎】下
开发语言·c++·搜索引擎
白雪讲堂1 天前
AI搜索品牌曝光资料包(精准适配文心一言/Kimi/DeepSeek等场景)
大数据·人工智能·搜索引擎·ai·文心一言·deepseek
DavidSoCool1 天前
es分页边界数据重复问题处理
大数据·elasticsearch·搜索引擎
GOTXX3 天前
BoostSiteSeeker项目实战
前端·c++·后端·mysql·搜索引擎·项目实战·boost
mooyuan天天3 天前
黑帽SEO之搜索引擎劫持-域名劫持原理分析
搜索引擎·seo搜索引擎劫持·seo域名劫持
yangmf20403 天前
私有知识库 Coco AI 实战(一):Linux 平台部署
大数据·linux·运维·人工智能·elasticsearch·搜索引擎·全文检索
Elastic 中国社区官方博客3 天前
Elasticsearch:理解政府中的人工智能 - 应用、使用案例和实施
大数据·人工智能·elasticsearch·机器学习·搜索引擎·ai·全文检索
LaughingZhu4 天前
PH热榜 | 2025-03-30
前端·数据库·人工智能·经验分享·mysql·搜索引擎·产品运营