搜索系统的“基本介绍” 搜索系统,顾名思义提供大数据查找筛选的系统功能。在电商和O2O领域作为一个主要的流量入口起到了至关重要的作用。 “基本介绍”:指标对于搜索来说,主要的指标为准确率和召回率。我们以下图为例解释下什么叫做准确率和召回率。 图中整体的部分为所有商品数据的全集,其中包括不相关和相关的内容。
由此我们可以看出,最完美的结果是A足够大且B足够小,但实际实现中会发现两个指标是相反的(召回率越高准确率会越低)。需要通过规则来平衡这块部分。 “基本介绍”:基础结构搜索系统主要的组成部分有几块:
整体流程如下 名词解释:
搜索的应用一般有两种:全文检索和suggest。其中suggest的规则比全文检索要简单一些。服务上由于suggest一般支持模糊查询的情况,所以要考虑服务上是否要独立还是公用一套。 搜索系统的“工作履历”:流程解构切词/词库切词,又叫分词。用于将用户输入的无结构化字符变成机器可识别的词组。市面上有很多成熟的切词组件。切词逻辑有很多种,根据字符、概率等,电商和O2O一般使用字符串切词的方式处理。关于切词的方法最基础的有最大正相匹配、最大逆向匹配、双向匹配等,具体的内容可以百度查询。切词工具根据词库中的词典进行切分,一般开源的切词工具都有默认的词库和自定义词库两种情况。用户可通过添加自定义词库来完善补充。 这里面需要强调的是切词时候的过滤,尤其生鲜类非标品情况下特别需要注意。
根据切出的词语进行匹配,匹配到的商品信息集合为检索结果集。结果集需要做检索、过滤、标记三个步骤。 检索 检索项包括但不限于:
成熟的电商系统不仅仅实现用户的基本商品检索,还会根据query进行意图分析来进行query转换。以生鲜电商举例,当用户搜索“猪肉”时,用户希望获得的不是含有猪肉词语的商品,而是猪肉的各个部位、猪肉级别等。这时应该转化为后臀尖、前臀尖、里脊,一级白条等词语进行检索,而不是匹配猪肉。意图分析主要有两个方面
过滤 获取的结果集需要经过去重、过滤的处理。此部分行为可以在加权打分后进行处理,也可以安排在初选结果后处理。
标记 在检索完成后需要对数据进行标记,以便后续做加权时使用。此步也可以在做加权处理的时候同步进行。 加权加权的目的是为了根据模型确定结果集各个商品的排序优先级。加权的维度有很多,根据不同的场景考虑也会有所区别。 加权因子主要分为几个维度:
相关度 这里指的是分词的相关度。包括文本匹配、词间距、是否是中心词、品牌词等。中心词的概念是是否命中了核心的词语,中心词和品牌词也需要有对应的词库进行维护更新。词间距是计算相关性的一个维度,比如一段文本中包含清华、大学,“清华大学xxxxxxx”和“清华xxxxxxx大学”相比肯定是前者相关性更高一些。 这里面有几点需要注意:
商业化因素 考虑业务场景下需要关注的因素称之为商业化因素。
个性化因素 按照个人使用的情况进行个性化排序,做到所谓的“千人千面”。包括下单数据分析等。这部分同意图分析的情况类似。 人为因素 在日常运营过程中,有很多需要做强制人为干预的事情(如人工置顶)。所以在加权的时候需要考虑此类行为。 数据模型统计 可以根据用户的一些行为数据或者埋点数据分析,提供综合排名靠前的商品或者分类做单独加权权重。包括:
根据加权的情况和一些特殊的处理,需要对最终输出的结果做排序调整。 这里提供两种方法供大家参考
最后要说下,在算法中要考虑相同因子下的打散,比如同一个商家店铺下的商品排序需要按照一定比例分布在不同地方,避免一次性展示过多同类商品。 如果系统能力富足,也可以增加单独的反作弊模块来处理一些恶意刷单刷榜的情况。 搜索与“大家”的关联搜索系统主要为用户端提供搜索结果的输出,输入方面来自于相关的下游系统。 当搜索场景进一步细分时,要考虑更多数据的对接和分类。 在设计时有几个需要注意的地方:
搜索系统的核心是算法,从产品层面来说更多是关注业务逻辑规则以及上下游的依赖情况。本文对搜索的一些通用情况做了简单介绍,更深入的内容还需要大家在日常过程中进一步的深挖。 |
|