淘宝搜索下拉框查询词提示(Suggestion)原理

时间:2024-03-04 21:05:24

 

      下拉框提示词(如图1所示),在淘宝搜索中,称为Suggestion(查询词提示),已经是淘宝搜索引擎必备的一个功能了,当你在搜索框进行输入时,搜索框会打开下拉的提示框,动态地向你提示一些与你已经输入内容相关的查询串。如果在提示框中看到所希望输入的查询串,直接用鼠标点击或键盘选择后,即可进行搜索,减少你的输入字符数。如果大家有一定的数字媒体检索和搜索引擎的基础知识,应该能联想到高频查询统计是如何运用在这当中的了吧。
   

       一个基本的模型是:统计查询串中可能出现的各个前缀子串,然后统计以各个前缀子串开头的查询串的频率。对各个子串,取以其作为前缀的对应K个最高频查询串。再以各子串为KEY,建立倒排索引。定期更新倒排索引,即可依据查询频率给出一个比较合理的提示内容。  
      模型并不复杂,但这么做有什么好处,其中包含的频率统计信息有什么意义呢?
      来做个简单分析,比如淘宝搜索引擎,一天接收到的查询次数为1000万次,不同的查询串有100万个。通常而言,按查询频率来统计,频率较高的前10%查询词,其被查询的次数会占到总查询次数的近50%。下面用二分图模型来说明这个过程,如图2所示。
      对于用户和具有相同前缀的查询串,分别以上图中的u和q来表示。对于用户ui查询qi串的行为,以在ui与qi间连边来表示。假设各次查询之间是相互独立的,则一次查询命中查询串q的概率与q的度数成正比。如果将已有的查询记录作为先验模型,那么当某用户发起一次查询时,度数高,即查询频率高的串被命中的概率就大,所以会优先出以用户输入为前缀的高频查询串。
       而具体到一个查询串,按上述思路来推测,当用户输入第一个字之后,所提示的字串中包含用户希望输入查询串的概率可以这样计算:提示字串在所有以该字开头的查询串中查询次数所占的比例。一个合理的假设是,以某串P作为前缀的查询串Q,其数目会随着P的串长增长而快速下降。这个速度通过统计公共前缀查询串的数目可以推断,用户也能够查找到相关的统计资料,这里不再举具体数据。
    按这样的方法,随着用户主动输入字串的长度增长,提示词命中用户真实查询词的概率将不断增加,因而需要用户主动输入的字串长度将缩短。整体上讲,能有效地降低用户使用搜索引擎的复杂度。这对于广大的中文搜索引擎用户,无疑是有吸引力的。因为大多数用户使用的是拼音输入法,需要不断地在同音字中选取自己所需要的字、词,现在搜索引擎有了这样一个功能,大家使用起来会方便很多。
       根据以上介绍的Suggestion,我们还可以引入淘宝搜索点击日志,可以进一步利用点击信息来度量查询间的相似性,从而改进Suggestion。
       以二分图作为分析工具,对于查询qi,用户点击的结果URL为uj,则在于之间连一加权边,eij其权重对于qi的所有查询中,uj被点击的次数wij。如图3所示。

       对于查询qi则可以用这些与之相连的加权边表示。其形式为:
             基于这种表示,就可以度量两个查询之间的相似度:
       这种做法就是利用点击作为联系查询与结果的桥梁,将结果集作为表达查询的一个特征空间,并在这个特征空间中度量查询的相似度,从而找到相近的查询作为Suggestion结果,由此可见,淘宝点击日志的作用是多么的重要!