此文已由作者赵斌授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
对于搜索引擎来讲,很多情况下只需要用户在搜索输入框内输入所需要查询的内容就可以了,其余的事情就全部交给搜索引擎去处理。理想的情况下,搜索引擎会优先返回用户想要的结果。理想很丰满,但总会存在一些骨感的现实,用户通过搜索无法找到最想要的结果。如果应用中压根不存在用户搜索的内容,倒还可以理解。反之的话,就是一个大写的尴尬。本文主要谈论和解决的是令人尴尬的问题。
为什么会搜索不到
1、不同的用户对同一种诉求的表达往往是有差别的,往往会存在一种比较常见的现象,用户输入的query并不能清晰准确的表达需求。
2、搜索系统对用户query的理解能力较弱,无法挖掘出用户的真实需求。
3、召回结果集的排序不合理,可能用户需求的内容被排在后面而未曝光。
以上几点大概是用户无法找到需求内容的主要原因,本文主要讨论的是前两点,主要是想解决如何更好的理解用户的需求并进行准确的召回,进而对第三点所涉及到的排序起到积极作用。
用户作为一个使用主体,其知识水平和表达能力会有差异,当不同用户想搜索同一个商品时所输入的query会存在差别,具体如下所示:
可见,对于同一个商品往往会对应不同的query,相对精确的有“蔓越莓胶囊欧洲”、“blackmore蔓越莓”;品牌优先的有“blackMores”;功效优先的有“女士痛经”,"泌尿系统感染";输入错误的有"蔓越梅",输入别名的有"圣洁莓";输入较模糊的有“妇科”,“炎症”。所以说用户的输入一般会存在表达差异,词汇差异,需求明确性差异等。
要想解决这些问题就需要通过用户输入的query来获取用户的真实需求,本文把对用户输入的理解称为QueryParser,包含:query切分(分词),query意图识别,query改写(query扩展/query纠错/query删除等),接下来本文主要针对query意图识别和query改写结合在考拉海淘搜索中的具体应用来和大家聊聊。
1.query意图识别
本文主要针对垂直搜索进行介绍,不同的垂直引擎中的query会有自己的特点。像去哪儿网的日志中肯定有很多“城市a到城市b的机票”这种pattern的query,而电商网站中肯定大部分是“产品/品牌/型号/款式/价格”等类型数据的组合,音乐类应用中大部分应该是艺人和歌曲名相关的query。相比通用搜索而言,垂直搜索可能更针对性的挖掘用户的意图。