什么是 query 改写

query 改写是搜索系统中最基础也是最重要的一个模块,简单来讲就是把用户输入的 keyword 转换成最贴近搜索系统内部的可识别的 keyword。

搜索引擎检索 keyword 的时候主要是匹配和排序,匹配也常常被称作“召回”,在搜索和推荐领域会有一个“召回率”的指标,在此不做展开。query 改写则会直接影响召回的指标

query 改写可以分成几个大的功能:纠错(ERROR Correction)、意图改写、记录 keyword

举个电商行业的例子:

用户搜索关键字: 男士鞋

倒排索引:
 doc1: 男士鞋白色百搭
 doc2: 男鞋红色运动型
 doc3: 鞋子蓝色透气舒适
 doc4: 女生跑步鞋

如果不进行 query 改写那么它就会返回在索引中与 “男士鞋” 完全匹配的文档,此时只有 doc1 能够被召回,此时显然不是我们想要的,如果 改写 query 会是什么样的?

男士鞋 -> 男|男士|鞋

将 keyword 按一定的逻辑进行拆分,然后推测用户想要搜什么,也就是拆分后的字或者词哪个是重要的。这样就能返回 doc1 和 doc2 以及可能会返回 doc3 ,这就有一定的概率性,牺牲一定的准确度来获得更多商品的召回。

怎么去做 query 改写

  • n-gram (N 元语法模型)
  • 知识图谱
  • 协同过滤

n-gram