有赞短网址生成(有赞搜索引擎实践(算法篇))

本文目录
有赞搜索引擎实践(算法篇)
注:转自于 有赞
在上篇文章(工程篇)中, 我们介绍了有赞搜索引擎的基本框架. 搜索引擎主要3个部件构成. 第一, hadoop集群, 用于生成大规模搜索和实时索引; 第二, ElasticSearch集群, 提供分布式搜索方案; 第三, 高级搜索集群, 用于提供商业搜索的特殊功能.
商业电商搜索由于搜索的特殊性, 独立的ElasticSearch集群是无法满足多样的算法需求的, 我们在搜索的各个部件上都有相应的算法插件, 用于构建商业电商搜索引擎的算法体系.
创建索引过程从原始数据创建倒排索引的过程. 这个过程中我们对商品(doc)进行分析, 计算商品静态分, 并对商品进行相似度计算. 商品的静态分对于提升搜索引擎质量起到至关重要的作用, 相当于网页搜索的pagerank, 想象一下如果没有pagerank算法, 网页搜索的质量会有多么差. 在电商搜索中, 最常见的问题是相似商品太多, 必须在建立索引过程中就对商品间的相似度进行预计算, 以便在检索过程中进行有效去重.
创建索引的过程如下.
step 1. 计算每个doc的静态分
step 2. 计算两两doc的相似度
step 3. 根据相似度和其他信息对数据进行分库
step 4. 建立ES索引
检索过程是搜索引擎接收用户的query进行一系列处理并返回相关结果的过程. 商业搜索引擎在检索过程中需要考虑2个因素: 1) 相关性 2) 重要性.
相关性是指返回结果和输入query是否相关, 这是搜索引擎基本问题之一, 目前常用的算法有BM25和空间向量模型. 这个两个算法ElasticSearch都支持, 一般商业搜索引擎都用BM25算法. BM25算法会计算每个doc和query的相关性分, 我们使用Dscore表示.
重要性是指商品被信赖的程度, 我们应该吧最被消费之信赖的商品返回给消费者, 而不是让消费之自己鉴别. 尤其是在商品充分竞争的电商搜索, 我们必须赋予商品合理的重要性分数, 才能保证搜索结果的优质. 重要性分, 又叫做静态分, 使用Tscore表示.
搜索引擎最终的排序依据是:
Score = Dscore * Tscore
即综合考虑静态分和动态分, 给用户相关且重要的商品.
检索的过程大致抽象为如下几个步骤.
step 1. 对原始query进行query分析
step 2. 在as中根据query分析结果进行query重写
step 3. 在as中使用重写后的query检索es
step 4. 在es查询过程中根据静态分和动态分综合排序
step 5. 在as中吧es返回的结果进行重排
step 6. 返回结果
下面几章阐述几个重点技术.
在电商搜索引擎里面商品的静态分是有网页搜索里面的pagerank同等的价值和重要性, 他们都是doc固有的和查询query无关的价值度量. pagerank通过doc之间的投票关系进行运算, 相对而言商品的静态分的因素会更多一些. 商品静态计算过程和pagerank一样需要解决如下2个问题: 1. 稳定性. pagerank可以保证一个网站不会因为简单链接堆砌可以线性提升网站的排名. 同样, 商品静态分的计算不可以让商品可以通过增加单一指标线性增加分值(比如刷单对搜索引擎的质量的影响).
2. 区分度. 在保证稳定性的基础上商品静态分要有足够的区分度可以保证同样搜索的条件下, 排在前面的商品的质量比排在后面的商品的质量高.
我们假设商品的静态分有3个决定性因素, 1.下单数, 2. 好评率 3. 发货速度
静态分我们使用Tsocre表示, Tscore可以写成如下形式:
Tscore = a * f(下单数) + b * g(好评率) + c * h(发货速度)
a,b,c是权重参数, 用于平衡各个指标的影响程度. f,g,h是代表函数用于把原始的指标转化成合理的度量.
首先, 我们需要寻找合理的代表函数.
z-score 标准化方法
这种方法非常不稳定, 假设一个奇异点是第二大的值的1000倍, 会让大部分的值都集中在0~0.01, 同样失去了归一化的目的.
(图三: log-zscore归一化)
最后, 选择合适的权重 经过log-zscore归一化以后, 我们基本上吧f,g,h的表示的代表函数说明清楚. Tscore = a f(下单数) + b g(好评率) + c*h(发货速度), 下一步就是确定a,b,c的参数. 一般有两个方法:
a) 专家法. 根据我们的日常经验动态调整权重参数;
b) 实验法. 首先在专家的帮助下赋一个初始值, 然后改变单一变量的方法根据abtest的结果来动态调整参数.
商品标题去重在电商搜索中起到重要作用, 根据数据, 用户通过搜索页购买商品80%选择搜索的前4页. 商品标题的重复会导致重要的页面没有含金量, 极大降低了搜索的购买率.
举个例子:
Title1:美味/香蕉/包邮/广东/高州/香蕉/banana//无/催熟剂/
Title2:美味/香蕉/广东/高州/香蕉//非/粉蕉/包邮/
首先, 进行特征向量化
这里用到 "bag of word" 技术, 将词汇表作为空间向量的维度, 标题的每个term的词频作为这个feature的值. 以这个例子来说. 这个词汇的维度为: 美味(0), 香蕉(1), 包邮(2), 广东(3), 高州(4), banana(5),无(6), 催熟剂(7),非(8),粉蕉(9) 位置: 0,1,2,3,4,5,6,7,8,9
Title1: 1,2,1,1,1,1,1,1,0,0
Title2: 1,2,1,1,1,0,0,0,1,1
这个每个title都用一个固定长度的向量表示.
再次, 计算两两相似度
相似度一般是通过计算两个向量的距离实现的, 不失一般性, 在这里我们使用1-cosine(x,y)来表示两个向量的距离. 这是一个"All Pair Similarity"的问题, 即需要两两比较, 复杂度在O(n^2). 在商品量巨大的时候单机很难处理. 我们给出两种方法用于实现"All Pair Similarity".
方法一: spark的矩阵运算.
方法二: map-reduce 线性方法. 这个方法参考论文"Pairwise Document Similarity in Large Collections with MapReduce". 可以实现几乎线性的时间复杂度. 相对于矩阵运算在大规模(10亿以上)pair similarity 运算上面有优势. 这个方法简单的描述如下: 首先, 按照倒排索引的计算方式计算每个term到doc的映射. 比如3个doc:
转化为倒排格式, 这个需要一次mapper reduce
然后, 对于value只有一个元素的过滤掉, 对于value大于2个doc的两两组合:
最后, 对于输出进行聚合,value为重复次数和两个doc乘积开根号的比.
对于2个title1, title2, 如果X(title1, title2) 》 0.7 则认为title1和title2相似, 对于相似的两个doc, 静态分大的定义为主doc, 静态分小的定义为辅doc. 主doc和辅doc分别建库.
区别于网页搜索(网页搜索直接将辅doc删除), 我们将主doc和辅doc分别建库. 每一次搜索按比例分别搜主库和辅库, 并将结果融合返回. 这样可以保证结果的多样性.
店铺去重和商品标题去重有点不同. 由于电商特定场景的需要, 不希望搜索结果一家独大, 这样会引发强烈的马太效应. 店铺去重不能使用如上的方法进行. 因为上面的方法的主要依据是文本相似, 在结果都相关的前提下, 进行适当的取舍. 但是店铺去重不是这样的特性.
设想一下, 如果我们根据店铺是否相同, 把同一店铺的商品分到主库和从库中, 如下图所示.
A和B代表不同的店铺.
在搜索香蕉的时候, 的确可以控制A店铺结果的数量, 但是在搜索"梨"的时候就错误的吧B店铺的梨排在前面了(假设A:梨比B:梨静态分高).
搜索的过程每个桶平均分摊搜索任务的25%, 并根据静态分合并成一页的结果. 这样同一保证结果的相对顺序, 又达到了店铺去重的目的.
如上图所示, 搜索"香蕉", 虽然A店铺有10个满足需求的结果, 但是每页搜索醉倒只有5个结果可以展示.
上面介绍了几个建立索引过程中几项技术, 检索过程中的关键技术有很多. 其中最著名的是query分析技术. 我们使用的query分析技术主要包括核心词识别, 同义词拓展, 品牌词识别等等. query分析技术大部分都是NLP研究范围, 本文就不详细阐述很多理论知识. 我们重点介绍同义词拓展技术. 这个技术一般都需要根据自己的商品和和用户日志特定训练, 无法像分词技术和品牌词识别一样有标准的库可以适用.
同义词拓展一般是通过分析用户session日志获取. 如果一个用户输入"苹果手机"没有得到想要的结果, 他接着输入"iphone", 我们在"苹果手机"和"iphone"之间创建一个转移关系. 基于统计, 我们可以把用户query创建一个相互联系的权重图.
用户输入query "苹果手机", 根据query分析, "苹果手机"有 "iphone" 0.8, "iphone 6" 0.5 两个同义词. 0.8和0.5分别表示同义的程度. 我们想要"苹果手机", "iphone", "iphone 6" 3个query同时输入, 并且按照同义的程度对不同的query赋予不同的权重. ElasticSearch提供的BoostingQuery可以支持这个需求. 参考: 搜索算法是一个非常值得一个电商产品持续投入的技术. 一方面我们技术人员要有良好的技术背景, 可以借鉴很多成熟的技术, 避免重复造轮子; 另一方面, 每个产品的搜索都有自身的特点, 需要深入研究产品的特性给出合理的解决方案. 本文给出的案例都具有代表性, 灵活的运用搜索的各方面的技术. 另外, 商业搜索非常看重投入产出比, 我们也需要在众多方案中寻找捷径. 比如我们在做类目体系时候, 没有投入大量的人力资源用于标注数据, 而是通过爬虫爬取其他电商的数据进行参考, 从而节省了80%的人力资源. 由于笔者能力有限, 文中的方案不保证是问题的最优解, 如果有指正, 请联系笔者( hongbin@youzan.com ).
如何推广有赞
1、自有流量推广。首先,线上的自有渠道会有微信公众号、朋友圈、小程序或微博等社交渠道,还有自带流量的大型电商平台如天猫、京东、美团等。还有些商家也有自己的官网或APP,这些渠道都可以帮商家进行推广。当然,有些商家不仅有线上的渠道,还会有线下的自有渠道,比如拥有线下门店的商家可以利用门店的海报、门店导购进行推广。
2、拓展流量推广。可以通过SEM/SEO搜索优化、付费推广等方式获得流量,或者利用大号进行推广。此外,还可利用例如有赞大号,有赞分销系统,有赞广告投放系统等,在线上推广。同样,一些垂直行业内的地推或展销、会销,如果有机会参与,同样能增加曝光量。有一些聪明的商家,会巧妙的运营营销插件,比如分销员、扫码付款默认自动关注公众号、满减、代付、签到等多种营销工具来帮你推广。
3、小程序。现在小程序迎来了井喷式的增长,附件的小程序同样能帮助本地商家获取周边流量,特别是连锁门店优势更加凸显。有赞可以帮助商家一键生成小程序,快速强震微信红利。卖家可以从微信中打开,用完即走。
4、多人拼团。使用多人拼团,可以选择通用性强、销量较好的一款产品,以优惠的价格引导老客户下单,同时需要老客户分享到微信群让更多人一起拼团购买。
5、分销员。分销员是有赞微商城推出的一款可以帮助商家拓宽推广渠道的应用营销工具。商家通过制定推广计划招募卖家加入推广队伍,并在成交后给予一定佣金奖励,获得商家和分销员双赢局面。
6、多网点。有赞多网点系统是一个面向线下连锁零售企业的全渠道信息化管理工具。可根据配送成本,给不同网店划定不同配送区域,让配送范围更加精准即时。同时,可以扩大店铺辐射范围,增加用户量。
7、秒杀。有赞秒杀”是一款针对商品的营销应用工具,商家通过使用该款营销工具,可以用超低的价格,吸引更多的会员,带动店铺的整体销量。秒杀活动可以提前预热,会员可以通过预约的方式报名活动,预约方式分为2种:关注店铺或者答题。——增加店铺粉丝,提升店铺品牌。别于其它营销活动,秒杀商品还可以以sku维度参与活动。
有赞店铺二维码怎么生成
有赞店铺二维码这么生成:
1、进入有赞店铺卖家中心。
2、在有赞店铺管理中点击店铺。
3、找到营销推广,点击二维码设置后台。
4、进入二维码生成区、可以看到二维码就可以生成有赞店铺二维码。
有赞分销短链哪里复制
1.网页上打开有赞商家店铺,然后进入主页,找到全部商品然后复制需要下载的商品链接地址粘贴到软件上
图片
2.在下载选项中把“下载主图”及“下载细节图”两个勾选,然后立即下载
3.文件保存位置可以自定义选择,下载完成后,点击打开文件夹即可浏览到下载好的商品主图和细节图

更多文章:
广州城市投资建设集团有限公司(广州市城市建设开发有限公司电话是多少)
2026年4月30日 23:22
免费建站绑定自己的域名(怎样可以用云指建站的免费版绑定自己的域名)
2026年4月25日 19:23
深圳公共场所核酸查询(深圳核酸检测咨询电话,深圳核酸检测电话是什么)
2026年4月29日 00:34
中国的营销行业是什么时候引进来的?如何理解市场营销宏观环境中的政治法律环境
2026年4月17日 14:15
网页浏览器tv版(Samsung 8三星电视可以安装什么网页浏览器)
2026年5月12日 00:26
旅游网站建设新闻有哪些免费开源模板推荐:旅游网站建设新闻如何选择免费开源模板
2026年6月7日 09:30
十堰网页seo优化技巧有哪些:十堰网页seo如何有效提升网站流量
2026年6月4日 16:15
成都百度关键词排名(成都市公司搜索引擎推广排名seo优化关键词有什么办法)
2026年5月4日 05:47














