query suggestion/ query 下拉推荐

1. 项目简介

query下拉推荐或query自动补全,是在搜索引擎场景中广泛应用的一个功能;当搜索栏中有任意输入时,搜索栏下方立刻根据输入推荐/提示出以输入为前缀的相关词,如图1所示。


图1 query suggestion.png

良好的推荐效果不仅能够节省用户输入提高用户搜索,同时对用户体验也有极大的提升。接下来的章节中,将围绕这个主题进行 详细讨论其中的问题和挑战,及在实际业务中所采用的方案。

2. 相关工作

2.1 问题

  • 如何鉴别输入是一个前缀
  • 前缀和候选词之间如何建立联系
  • 候选关键词列表排序规则

以上是该项目需要解决的主要方面。
对于问题1,在query suggestion项目中把任意用户的输入都作为一个前缀,不管当前输入是仅有一个字母还是一个词组。
项目中通过在prefixes和候选关键词之间建立倒排索引将二者联系起来,倒排索引的建立在离线状态下完成(可定期更新),在线情况实则只是一个通过key查找value的过程,而有很多人会怀疑,按这种方式,这个效率会不会很低,经过实测,在prefix集为150w的情况下,整个服务的返回时间在10ms左右,那么这个在通用场景下效率完全可以胜任。
最后一点就是候选关键词列表rank 模型,即如何从候选中选择合适的关键词,本项目采用关键词搜索次数及其对应结果数,加权求和作为每个keyword的 rank score。

3. 模型和算法

在这个项目中主要用到的算法和模型相对较简单,主要应用在prefix生成、prefix和关键词倒排索引,及候选关键词排序。用到的模型包括:

  • 1 . 拼音->汉字模型
    用于通过汉字(拼音)获取拼音(汉字),在这个模型中如果汉字是多音字,则会将其所有拼音一同返回。
  • 2 . prefix生成模型
    根据关键词、关键词对应拼音等生成对应的prefix列表。
  • 3 . 关键词排序模型
    对候选关键词列表进行排序,返回最合适的关键词列表。

4. 策略设计

项目整体设计思路如下所示:

图2 系统架构图.png

这是一个完备的系统设计方案,包括数据输入、模型创建、数据更新等。项目首先根据历史搜索日志或者某种结构化文档提取出关键词(这个过程会涉及到文本分词,文本分词器会在另一篇文档中进行介绍),并记录下其对应的检索次数和所对应的结果数或者是词频,作为整个数据模型的输入,然后用到前术的算法和模型build data model,这个过程分为增量更新和全量更新,增量更新就是把送来的数据build之后加入到之前的内存结构中;全量索引即是用新生成的数据模型替换旧的数据模型。之所以设计数据更新这一部分的原因是我们所用数据的属性是在不停的变动中,所以要保持数据新颖度。之后通过已经创建好的数据模型就可以获取每个prefix下的推荐关键词了。

5. 评估方案

对于query suggestion的评估最主要指标是,比较推荐关键词是否是用户真实想要输入的词,而本文的设计方案只能通过上线后从日志中统计用户真实输入及推荐结果的数据然后进行分析。目前从实际情况来看,因为是对搜索日志数据进行挖掘进行推荐,换句话说,推荐的词一般都是全网热搜的词,效果相对较好。

6. 其他方式及优化方向

本文只是描述了一种实现query suggestion的简单方案,在实际应用中,还需要考虑用户搜索上下文场景进行信息以便准确预测用户想要的真是输入。总体来说,未来优化方向为:

  • 考虑用户上下文信息进行准确推荐
  • 排序模型优化,采用ML方法去自动学习每个部分的权重
  • 考虑是否有其他方式来实现这个功能。

项目地址: https://github.com/syw2014/query-suggestion
转载请注明出处:http://www.jianshu.com/p/aa074cc6a7b3

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容