3.2.3 识别模块:输入与输出

识别模块承担了搜索系统与用户交互的功能,分为两部分:一部分是承担用户输入搜索关键词后的查询预处理与查询转换工作,作用是将用户语言翻译成机器语言;另一部分是将排序结果输出展现给用户。识别模块原理架构如图3-16所示。

1.查询预处理

针对用户输入的各式各样的搜索查询词,查询预处理有以下几种处理方式。

图3-16 识别模块原理架构图

(1)拼音转中文

当用户在搜索框中输入拼音时,系统能够将拼音识别出有可能组合成的几种中文结果,这种场景其实在日常搜索中非常多,例如我们碰到只会拼但不会写的字时,往往就会通过输入拼音来替换。

(2)自动纠错

这需要系统维护一张纠错表,在对用户的错误查询搜索无命中内容后,对用户查询要通过纠错表来将原词映射给纠错后的词,从而实现自动纠错。在搜索产品设计里我们也介绍过自动纠错,要注意在展现纠错结果时,需要有文案提醒用户“目前展现的是纠错后的结果,您是否要继续搜索原词”等。

(3)词意转换

用户有时候很难精准地表达自己的诉求,比如用户其实并不知道“荨麻疹”这样的专业医学术语,只会搜索“皮肤上长满红点点而且还很痒”这样的描述性话语,如果搜索系统能够将专业术语和描述性话语相匹配,进行词意转换,将会极大地提高用户对结果的满意程度。

2.查询转换

查询转换是理解用户搜索意图的关键环节,如果对用户的搜索意图理解不到位,那么无论后续的排序模块与索引模块做得多好,也很难得到用户期望的结果。与索引创建模块相对应的,这里会针对用户的查询进行分词、停用词去除与词干提取,生成可以和内容的索引相匹配的词汇。

查询转换环节与前文介绍的索引模块的内容转换层相对应,前者处理外部输入信息,后者处理底层存储数据信息,处理过后两边才能匹配、对应上,搜索系统根据查询转换后的短词去找到索引模块的对应索引项。与此同时,查询转换还承接了排序模块,排序模块需要根据查询转换解析后的关键词,从索引模块召回相应内容,完成排序。

3.结果输出

结果输出模块是指对排序模块已经排好顺序的内容进行展示,就像在前面搜索产品设计里介绍的那样,该模块需要对内容进行自动排序、分类展示、关键词高亮等处理,也包括在用户内容里安插商业广告,以拓展收入目标。

结果输出模块需要注意的是,可以将用户满意(用户有点击行为可视为用户满意)的历史查询结果存储在缓存中,其目的是提高结果输出的速度,只有在缓存中没有的结果才需要去数据库中查询,这一设计模式能够减少重复查询对计算的消耗。