某日活千万级的垂直类电商平台,业务以社区+商城形式开展,商城业务是商业收入的主要来源,大部分用户有明确的购买指向性,其中商品搜索天级PV3000万+,搜索引导的成交占比全部成交的60%以上,是站内最重要的功能,在用户满意度调研中发现对搜索体验吐槽连连,反馈的主要问题是站内商品搜不到,个人卖家发布的商品排序靠后。
(1)用户反馈:搜索不到想要的商品,体验差;
(1)垂直小众的圈子,对于商品的叫法非常多样,并形成主流,用户搜索中不一定按照实际商品名称进行查询(例如:用户会搜“喷泡”其实想找的商品是Air Jordan AirFoamposite系列的鞋);
(2)用户搜索表述错误(例如:搜“连衣群”其实是想搜“连衣裙”);
(3)站内的搜索结果分3个tab呈现,分别为“销量”、“价格”、“新品”,用户搜索后默认展现的是“销量”tab下的结果,因此个人卖家发布产品由于销量少或无销量自然导致排序靠后,曝光量小,销量难增长,恶性循环;
(1)针对召回结果不理想情况,经分析发现自建ES服务没有对搜索关键词做智能的语义理解,甚至有些实体名词分词还是错误的;
(2)针对排序问题,经分析需增加“综合”搜索结果呈现,根据核心索引优化排序算法;
OpenSearch的查询分析中提供的拼写检查功能,对查询词中的错误进行纠正,给出正确的查询词。并根据纠错的可信度高低,决定当前查询是否用纠错后的词进行查询。规则如下:
其中的correction_level标识了本次纠错的可信度:
1.可信度高 2.可信度低
2)同义词 同义词在现实生活中,相同语义的表述词汇往往有很多,而用户在检索的时候很难在一条 query 中将它们全部体现,所以识别和提供同义词检索显然可以获得更高的召回率。
同义词功能主要是对查询词进行同义扩展,扩大召回和查询词同义的文档。
例如:“包菜” 存在一个同义词是“圆白菜”,在没有开启同义词功能时,搜索“包菜”时是无法召回文档中仅包含“圆白菜”;开启同义词功能时,则能召回。
3)停用词 根据系统内置的停用词典过滤查询中无意义的词(一般是使用频度过高的但不影响查询结果的词,比如标点符号、语气助词等)。例如:查询词“奔跑吧!兄弟”,经过停用词处理后标点符号“!”不参与召回;或者“你吃饭了吗”,经过停用词处理后语气助词“吗”不参与召回。
4)电商实体识别 实体识别,全称命名实体识别(Named Entity Recognition,简称NER),指对查询词中的具有特定意义的语义实体进行识别。查询分析根据识别的结果,依据实体类型的权重对查询词进行改写,使得召回的文档符合查询的意图。
(2)针对商品别称问题,运营同学通过平时运营积累的专业词汇可视化同步到开放搜索做查询语义理解功能的补丁,通过灵活干预得以解决; (3)创建核心索引“商品标题、颜色、类目名称、品牌名称、运营优化文案、系列名称等”,将它们引入到排序表达式中,通过多个维度构建出更精细化的排序模型; (4)增加“综合”搜索tab,并默认展示“综合”搜索结果;
(1)搜索“詹姆斯球衣”输入成“詹慕斯球衣”
Before:无法召回相关结果; After: 召回到Air Jordan AirFoamposite系列的鞋
(3)排序效果
Before:以销量默认排名,个人卖家排序靠后 After:提高搜索相关性增加更多商品曝光机会
以上就是我今天分享的内容,希望对大家有一些搜索引擎的新思路~ 如果对【阿里云开放搜索】感兴趣的同学可以联系我,一起交流哦~