POST TIME:2018-12-03 21:29
之前的文章探讨过用户端背后系统的逻辑和结构情况,后续我会考虑逐步解构每个相关系统的情况。今天跟大家聊一聊搜索系统,搜索系统在所有电商系统里面复杂度和难度是可以排的上前列的。关于算法方面介绍的文章很多,这里不做赘述,只解构下搜索系统的基本逻辑和实现。对于产品来说不免难免沟通时“露怯”,了解搜索系统的基本知识和结构是有须要的。
搜索系统的“基本介绍”搜索系统,顾名思义提供大数据查找筛选的系统功能。在电商和O2O领域作为一个主要的流量入口起到了至关重要的作用。
“基本介绍”:指标对于搜索来说,主要的指标为准确率和召回率。我们以下图为例解释下什么叫做准确率和召回率。
图中整体的部分为所有商品数据的全集,其中包孕不相关和相关的内容。
准确率:搜索结果中相关内容的比例,即图中A的部分召回率:搜索结果占整体内容的比例,即A+B由此我们可以看出,最完美的结果是A足够大且B足够小,但实际实现中会发现两个指标是相反的(召回率越高准确率会越低)。需要通过规则来平衡这块部分。
“基本介绍”:基础结构搜索系统主要的组成部分有几块:
切词逻辑词库基础信息加权规则排序展示逻辑整体流程如下
名词解释:
query:是查询的意思,这里指用户在搜索框输入的内容。切词:又叫分词,是按照词库/词典将一段文本进行切分以便机器识另外过程。词库:指用于切词的词库。加权:将检索结果集根据必然的维度、规则进行打分就叫做加权。索引:商品信息存储时需要建立索引,索引作为每个商品的标识便利在大数据量的情况下快速查找筛选。“基本介绍”:应用场景搜索的应用一般有两种:全文检索和suggest。其中suggest的规则比全文检索要简单一些。办事上由于suggest一般支持模糊查询的情况,所以要考虑办事上是否要独立还是公用一套。
搜索系统的“工作履历”:流程解构切词/词库切词,又叫分词。用于将用户输入的无结构化字符酿成机器可识另外词组。市面上有很多成熟的切词组件。切词逻辑有很多种,按照字符、概率等,电商和O2O一般使用字符串切词的方式处理。关于切词的方法最基础的有最大正相匹配、最大逆向匹配、双向匹配等,具体的内容可以百度查询。切词工具按照词库中的词典进行切分,一般开源的切词工具都有默认的词库和自定义词库两种情况。用户可通过添加自定义词库来完善增补。
这里面需要强调的是切词时候的过滤,尤其生鲜类非标品情况下特别需要注意。
单字词、助词之类的是否要过滤掉。如米、面、油等别号情况的处理,尤其是生鲜类。好比在北京叫油菜,在上海叫上海青,在重庆叫漂儿白检索结果集按照切出的词语进行匹配,匹配到的商品信息集合为检索结果集。结果集需要做检索、过滤、标记三个步骤。
检索
检索项包孕但不限于:
商品名称商品标题、副标题商品描述商品参数、规格商品品牌(生鲜副食品类尤为重要,好比五得利面粉、鹏程五花肉)商品品类(一级类、二级类)别号关联商品促销类型成熟的电商系统不但仅实现用户的基本商品检索,还会按照query进行意图分析来进行query转换。以生鲜电商举例,当用户搜索“猪肉”时,用户希望获得的不是含有猪肉词语的商品,而是猪肉的各个部位、猪肉级别等。这时应该转化为后臀尖、前臀尖、里脊,一级白条等词语进行检索,而不是匹配猪肉。意图分析主要有两个方面
行为模式分析用户画像分类过滤
获取的结果集需要经过去重、过滤的处理。此部分行为可以在加权打分后进行处理,也可以摆设在初选结果后处理。
同一个商品被多个词语命中需要去重现实中的电商搜索可能会按照差别的场景构建所谓的“小搜索”,如根据类目、根据品类、根据定制化场景等。所以针对差别的搜索场景可能会有单独的过滤去重条件,也可以在构建数据的时候使用差别的库进行处理。O2O场景需要根据必然区域概念(城市、商圈等)进行过滤售罄商品需要过滤下线商品需要过滤标记
在检索完成后需要对数据进行标记,以便后续做加权时使用。此步也可以在做加权处理的时候同步进行。
加权加权的目的是为了按照模型确定结果集各个商品的排序优先级。加权的维度有很多,按照差别的场景考虑也会有所区别。
加权因子主要分为几个维度:
相关度商业化因素个性化因素报答因素数据模型统计相关度