查询处理
概述
查询处理(Query Processing)是搜索引擎在线检索管道的核心:将用户原始输入转换为精确检索结果,包含查询分析(意图识别、拼写纠错)、查询重写(同义词扩展、查询扩展)、查询执行(索引查找、Posting 合并)三层。
关键内容
- 查询意图识别(Broder 2002三分类):
- 信息型(Informational):获取知识,积极扩展同义词,多样化结果
- 导航型(Navigational):找特定网站,保守处理(品牌名不纠错)
-
事务型(Transactional):完成操作,功能性页面
-
拼写纠错:
- 编辑距离(Levenshtein Distance):插入/删除/替换的最少操作数,DP 实现 O(mn)
- K-gram 索引加速:先用 Jaccard 相似度过滤候选集,再算编辑距离
-
噪声信道模型(Noisy Channel):
argmax_w P(observed|w) × P(w),结合键盘混淆矩阵和语言模型先验 -
查询扩展:
- 基于关联规则(搜索日志挖掘同义词/相关词)
- 伪相关反馈(PRF):假设 Top-k 文档相关,从中提取高权重词加入查询。Rocchio 算法:
q_new = α×q_old + β×(相关文档均值) - γ×(非相关文档均值)。风险:主题漂移(Query Drift) -
布尔查询解析:支持 AND/OR/NOT、短语查询(带引号要求相邻)、通配符(
pyth*)、范围查询、字段查询(title:python)。解析为 AST 后自底向上执行:AND 先处理 DF 最小词条(稀有词条先做,利用提前终止)。 -
近邻查询(Proximity):允许词条在窗口内出现而非严格相邻,得分
1/(1+min_distance)。 -
查询松弛(Relaxation):严格 AND 无结果时自动放宽:移除末尾词、AND→OR、部分匹配(至少 n/m 词)。
-
查询缓存:Top 1% 查询覆盖 50%+ 流量(Zipf 定律),缓存热门查询结果可达 80%+ 命中率。
来源
raw/articles/ai-engineering/search-retrieval/06_query_processing.md— 传统搜索引擎深度解析系列 第6篇