query 改写是搜索系统中最基础也是最重要的一个模块,简单来讲就是把用户输入的 keyword 转换成最贴近搜索系统内部的可识别的 keyword。
搜索引擎检索 keyword 的时候主要是匹配和排序,匹配也常常被称作“召回”,在搜索和推荐领域会有一个“召回率”的指标,在此不做展开。query 改写则会直接影响召回的指标
query 改写可以分成几个大的功能:纠错(ERROR Correction)、意图改写、记录 keyword
举个电商行业的例子:
用户搜索关键字: 男士鞋
倒排索引:
doc1: 男士鞋白色百搭
doc2: 男鞋红色运动型
doc3: 鞋子蓝色透气舒适
doc4: 女生跑步鞋
如果不进行 query 改写那么它就会返回在索引中与 “男士鞋” 完全匹配的文档,此时只有 doc1 能够被召回,此时显然不是我们想要的,如果 改写 query 会是什么样的?
男士鞋 -> 男|男士|鞋
将 keyword 按一定的逻辑进行拆分,然后推测用户想要搜什么,也就是拆分后的字或者词哪个是重要的。这样就能返回 doc1 和 doc2 以及可能会返回 doc3 ,这就有一定的概率性,牺牲一定的准确度来获得更多商品的召回。
n-gram
query 改写是搜索系统中最基础也是最重要的一个模块,简单来讲就是把用户输入的 keyword 转换成最贴近搜索系统内部的可识别的 keyword。
搜索引擎检索 keyword 的时候主要是匹配和排序,匹配也常常被称作“召回”,在搜索和推荐领域会有一个“召回率”的指标,在此不做展开。query 改写则会直接影响召回的指标
query 改写可以分成几个大的功能:纠错(ERROR Correction)、意图改写、记录 keyword
举个电商行业的例子:
用户搜索关键字: 男士鞋
倒排索引:
doc1: 男士鞋白色百搭
doc2: 男鞋红色运动型
doc3: 鞋子蓝色透气舒适
doc4: 女生跑步鞋
如果不进行 query 改写那么它就会返回在索引中与 “男士鞋” 完全匹配的文档,此时只有 doc1 能够被召回,此时显然不是我们想要的,如果 改写 query 会是什么样的?
男士鞋 -> 男|男士|鞋
将 keyword 按一定的逻辑进行拆分,然后推测用户想要搜什么,也就是拆分后的字或者词哪个是重要的。这样就能返回 doc1 和 doc2 以及可能会返回 doc3 ,这就有一定的概率性,牺牲一定的准确度来获得更多商品的召回。
n-gram