搜索产品指南:必须知道的几件事
搜索产品有很多,其中有哪些需要注意的问题?在技术之外,我们还需要知道什么?
搜索本身是一个比较技术的事情,小白产品想要学习搜索的产品知识,就会发现各大论坛上的搜索相关内容都是技术为主。即使买上几本搜索相关的书籍也大部分讲的是搜索引擎的原理,无从下手去学习,入门就更难了。
那对于一个搜索小白来说,到底应该怎么样去设计一个搜索引擎呢?
搜索路径:输入搜索词-抓取数据-分析用户搜索意图-识别意图并召回内容-结果集排序。
一、抓取数据
- 搜索引擎:在全网中抓取尽可能全的数据,供搜索引擎查询。
- 垂类搜索引擎:这些数据95%以上都是平台自建的,所以不需要去其他平台抓取数据。如:淘宝、美团都是平台自己维护的数据,平台需要做的事情就是尽量让数据准确、真实。如果一个卖衣服的商品录入的信息全是卖鞋的,即使引擎再好也无法识别这件“衣服”。
二、分析用户搜索意图:分词、词语处理、词语识别
1. 分词:单字分词、短语分词
1)单字分词
就是用户输入词分成单个字,每个单字匹配上搜索域就可以被搜索,这种分词简单易开发,适合spu和品类较少的平台。但这种分词方式有一个弊病,那就是搜索结果不准。
就比如我想搜索“小金锁”的面膜,那搜索域中匹配上“小”、“金”、“锁”三个字就可以被召回,真实案例就是搜索结果出现“金色小米手机人脸解锁”的手机,尴尬至极。
2)短语分词
这种分词方式需要准备一个基于自己平台的分词词库(如果没有找一个开源词库),分词引擎基于这个分词库来分词并进行搜索。
比如你想搜索“小金锁”,分词库中包含“金锁”、“小金锁”,那你搜索的词就会被分成“小”、“金锁”、“小金锁”,那搜索域中是“金色小米手机人脸解锁”的sku就不会被搜索出来,因为“金锁”、“小金锁”这两个词并没有匹配上。
部分垂类需要自建自己平台的分词库,比如电商类的平台,就可以从品类名称、地域名称、品牌名称、店铺名称去搭建一个基础库。提供一个思路大家自己去思考,下一步应该怎么搞?
2. 词语处理类
用户搜索词千奇百怪,避免不了同一个搜索结果,每个人搜索的词不相同。但为了保证无论用户输入什么搜索词,都可以变成想要的结果,这个时候就需要同义词、近义词、错别字、屏蔽词来干预。
1)同义词
因为结果集取并集,所以用户无论搜索同义词中的哪个词,得到的结果都是相同的。
同义词库搭建的时尽量保证词库的真实、准确,如果匹配分词库时有专业的业务部分,最好和业务部分确认好后再配置。如:剃须刀、刮胡刀,书、图书,上海九院、上海第九人民医院,拖鞋、鞋拖。
2)近义词
近义词是两种词的定义接近但又不是同一个东西的时候,一般配置近义词。如:生抽、老抽,猕猴桃、奇异果。
有的人认为不是一种东西,有的人又非说是一种东西(人的认知边界,此处不接受杠)。所以,近义词可以完美解决这种情况。排序的时候优先展示搜索词的结果集,配置的近义词在搜索词结果展示完后展示;当然也可以穿插展示,具体情况具体设计。
3)错别字
错别字需要做的是定义主词和错别字词,错别字在没有进入搜索引擎的前一步就完成的替换。
错别字情况在搜索引擎中最常见,如:雅诗兰黛、雅思兰黛、雅诗兰戴、雅诗蓝黛。这种情况简单点就走同义词,但对应的搜索词和搜索域的相似度会有一定程度的影响,所以错别字还是最有解决方案。
4)屏蔽词
屏蔽掉一些无关或者无意义的词。
如各种奇奇怪怪的标点符号、各种反d反d的词语等,行业内有很多标准词库。在技术论坛上查找,不过多介绍。
3. 词语识别类
主要还是标记一些词为特殊词,可以在用户搜索该类词的时候,给出一些特殊样式的惊喜,就比如搜索“雅诗兰黛”,不仅仅展示“雅诗兰黛”商品,也可以展示“雅诗兰黛”店铺、“雅诗兰黛”活动入口等等,给用户的惊喜也是很大的!
三、识别意图并召回内容
1. 搜索域:搜索域就是搜索词匹配相似度的文本
初级的搜索产品,可能会觉得所有的信息都放进搜索域中就行了。其实大错特错,这样导致的结果就是非常不准确。这个时候,搜索产品一定要克制,尽量把重要的字段放在搜索域中,就比如:商品标题、品类、标签、sku名称、sku规格等。
2. 相似度:搜索词和搜索域匹配度也叫相似度(偏技术可略过)
1)分词方式
如用户搜索:“你说的确实在理”。
- “你说”、“的”、“确实”、“在理”=1*2+2*1+3*2+4*2=18
- “你说”、“的确”、“实”、“在理”=1*2+2*1+3*1+4*2=15
- “你说”、“的确”、“实在”、“理”=1*2+2*1+3*2+4*1=14
机器无法判定那种分词方式是对,但是数字可以判断大小。所以,搜索词先判定了第一种分词方式(真正的分词比这个还要复杂,用分词数量和分词位置比较好理解,下几篇文字会详细讲下如何分词)。
2)匹配方式or和and
or和and无非就是用户搜索词和搜索域匹配的结果集是要部分匹配还是完全匹配,用哪种模式还是比较看行业的。电商、020建议用and较好,社区、视频等内容类建议用or较好。
3)文本相似度=余弦相似度
余弦相似度,就是通过一个向量空间中两个向量夹角的余弦值作为衡量两个个体之间差异的大小。把1设为相同,0设为不同,那么相似度的值就是在0~1之间。余弦相似度的特点是余弦值接近1,夹角趋于0,表明两个向量越相似。
看下图:
比如:{你说 的 确实 在理}、{你说 的 在理},对应的向量分别是{1,1,1,1}、{1,1,0,1}套入到的公式中,相似度约等于80.4%
PS:但相似度是不准确的,“你真好看”和“你真难看”相似度75%,但其实他们一点也不相似。所以,机器学习、语义识别、神经语言等还是需要逐渐搞起来的(小厂谨慎搞)。
四、结果集排序
1. 业务因子排序
基于行业特性,定义一些业务因子来综合打分行程排序。
基于多维度的分数来定义对应的结果集,一般可以加一些ctr、单uv价值、单pv价值、退款因子、转发互动因子等等。要知道搜索结果不仅要准确,还要足够受欢迎。
2. 人工干预排序
对于特定的词或者类型,给予一些人工干预,保证搜索结果的准确性。
3. 个性化排序
基于用户标签,在搜索结果集中加权值。
比如技术宅搜索”苹果“,大概率是想要iphone手机,那吃货当然更希望是水果喽。
搜索底层路径基本就这四大节点,底层动作围绕着四个节点有很多标准的行业解决方案,欢迎大家一起聊聊!
作者:Hankys;公众号:老韩带你侃产品
本文由 @Hankys 原创发布于人人都是产品经理,未经许可,禁止转载
题图来自 Unsplash,基于 CC0 协议
求问楼主,到底什么是搜索域呢?这个应该怎么来用白话的解释,更方便理解?
如果是切词太泛,导致召回非常多,然后结果集里的真正跟搜索词语意匹配的内容 因为受到排序因子影响,反倒是排序特别后,可以怎么解决呢
大体上靠权重来解决,相似度权重和排序因子的权重。看你什么类型的产品啊,你要是内容类的,当前是相似度要求高一些,如果是电商类、020类的,可能排序因子、lbs等权重高一些。还是要拿出具体的query词来分析,是哪一聚类的问题,才能定性定量的解决。
想问下对搜索结果集排序一般怎么做呢?给商品打分有很多维度:类目相关性、标题名称匹配度、还有业务人员定义的不同维度的例如商品点击率复购率下单量毛利率,具体怎么定义打分算法呢以及提供什么样的工具可以让人工影响最终的排序呢
影响这个排序的因素有很多,其实我一般给分成几大类:动态分、静态分、偏好分,这个三个分来综合权衡排序逻辑,那怎么来筛选出这个三个分的因子分别是什么呢?其实主要还是看你业务现状,如果你对搜索相似度要求较高,那就提高动态分,那你对业务数据要求比较高,那就提升静态分,如:单uv价值、ctr等等。
分词库是为了能更好的理解用户的输入,将用户的搜索目的和平台的商品、服务匹配。词库的来源错别字这种问题也是靠人工去建设词库做关联关系来实现吗?
主要还是看你们公司的技术储备,如果没有短语识别类的算法工程师,这个只能靠人工去积累,可以让开发一个词语于词语相似度脚本跑一下用户的搜索词,可以减轻人工的工作量
分词库是为了能更好的理解用户的输入,最终将用户的搜索目的和平台的商品、服务匹配。
是的,分词库会作用到用户搜索词和平台搜索域中,标准专业的分词库作用很大,阶段性更新分词库,数据也会随着变化,建议可以关注一下数据上的变化~
期待后续呀 很适合产品人的搜索文。