热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

超能搜索系统输入关键字_电商后台设计——搜索

编辑导语:我们在进行网上购物时,可以直接利用搜索功能查找想要的商品,十分快捷方便;为了方便我们的更快的找到,搜

编辑导语:我们在进行网上购物时,可以直接利用搜索功能查找想要的商品,十分快捷方便;为了方便我们的更快的找到,搜索后会根据系统内部的逻辑进行查找;本文作者详细介绍了电商平台的搜索原理以及搜索功能。

64565c8e7abeb5f71a247a7a6be2e109.png

电商平台商品成千上万,为了方便用户快速查找到自己想要的商品,平台中会设置有多种查询方式,如品类搜索、关键字搜索等。

但是无论前台页面样式如何改变,系统内部的搜索逻辑其实都是同一套,今天我们就来看看电商平台的搜索原理以及常见的搜索功能要点。

一、查询种类

如果按照内部逻辑划分,电商系统中的查询通常有两类:特定维度查询和关键字查询。

1. 特定维度查询

特定维度仅可查询由系统指定的部分可属性,如品类、品牌、价格、性别、材质等,并且用户无法输入查询值,仅能选择查询值。

由于这些数据在系统内部都维护有基础数据,并且保存在指定的字段中,所以对它们的查询相对比较简单。

用户在选中对应选项时,可以获得对应的唯一ID,之后根据ID查询相应字段获得结果,查询相对比较准确。

2. 关键字查询

整个搜索功能最重要的入口,允许用户随意输入要查询的关键字,通常仅有一个查询关键字长度限制。

相对于特定维度查询,关键字查询相对比较复杂,下图是搜索的原理图,下面来一一进行分析。

a929d77ab597be5ef184c703368165fa.png

二、逻辑层操作

当用户提交了查询关键字后,系统会将关键字交给搜索逻辑处理,逻辑层会进行一下几步操作:

1. 非法词过滤

由于关键字查询功能是对用户开放的,所以用户输入什么内容我们是不可控的。

我们在项目排查时经常会发现一些五花八门的关键字,其中有不少关键字比较敏感,比如涉黄、涉赌等等,这些关键字我们通常都会屏蔽,不进行数据搜索。

要屏蔽对应的关键字,后台就需要维护一套非法词库,当用户输入的关键字在非法词库中就不再做搜索,以减轻服务器压力。

网上一般有现成的词库可以直接导入系统,不满足的后台再进行维护扩充。

f4448aef6ebaf8e79c211321153187cf.png

2. 错误词纠正

在输入查询关键字时,用户可能会输入成拼音、或者错别字,如用户本意要输入“阿迪达斯”,实际输入成“阿迪斯”,但是结果依然能返回和“阿迪达斯”匹配的数据。

这是因为逻辑中有一套纠错词处理,当系统对比有错误时,会进行纠正处理。

同样后台也需要维护了一套纠错词库,当用户输入的关键字如果在纠错词库中,系统会自动将错误关键字替换为设置好的关键字;如:阿迪斯->阿迪达斯;阿达斯->阿迪达斯,之后查询实际采用的是转换后的关键字。

3. 特定跳转

有时我们在电商平台上输入查询关键字,会发现部分关键字结果不会跳转到结果列表页,而是跳转到一个商家店铺主页或者活动页;如输入关键字“阿迪达斯”,可能直接就进入到了阿迪达斯旗舰店页面,也有可能进入阿迪达斯活动专场页面。

要实现这个功能,后台同样需要维护一套跳转规则映射库;当用户的搜索关键字与规则库中的关键字匹配时,则返回规则所指定的跳转路径,前端页面直接跳转过去——通常这个跳转规则是有时间限定的。

e885a819308e10cc97aeca6d914feb48.png

4. 商品搜索

当用户输入的查询关键字通过非法词过滤、纠错词纠正、特定跳转匹配后,依然没有匹配结果,这时系统会将关键字交给商品搜索服务器。

搜索服务器首先会对关键字进行分词处理,然后再根据分词进行商品查询,并根据权重规则获得商品权重值,之后再进行权重值排序,最后返回查询结果。

在商品搜索中有三个非常重要的功能:分词、权重、以及搜索维度。

分词:分词是将一个比较长的关键字拆分成多个合理的比较短的关键字(如:阿迪达斯板鞋->阿迪达斯、板鞋、鞋);说起来只是简单的一句话,但是能做出一个好的分词项目并非易事,有兴趣的同学可以自己搜索中分分词原理,这里就不多说。项目中我们通常会引用第三方的分词软件获得分词,之后再去商品服务器中去查询数据并将结果展示出来。

权重:权重是衡量某一指标的重要程度,在电商平台里都是各家的商业机密,网上公开的资料也是少之又少;一个商品的权重高低,直接决定着商品排名情况,当然也就影响着销售额了;下一篇《权重设计》我会单独介绍电商平台是如何设计的。

需要注意的是上面提到的搜索服务器不是常见的关系型数据库(如mysql),而是全文检索服务器(如solr),一般的全文检索服务器也自带有分词功能,满足中小型电商的分析和搜索是没有问题的。

搜索维度:也就是用户可以通过哪些属性对商品进行搜索; 其中基础属性中的品牌、品类、价格都会参与搜索,还有特殊属性中后台明确规定参与搜索的属性(如果忘记了可以查看《属性管理》篇)。

商品搜索服务器会根据需要参与搜索的属性,对查询出的商品信息按各属性进行分组统计,然后由代码逻辑层进行数据整理,再由前端进行展示,最终就形成了搜索列表的样式。

00bb314e753b1a86251640fe0ba19301.png

不知道大家在JD上搜索时有没有发现,如果输入一个覆盖品类比较大的关键字,最终的返回结果只会是同一品类的商品。

如输入查询关键字【牛】,和牛相关的商品品类有牛肉、牛仔裤、牛油果等等,实际结果只有肉类产品。

这个主要就是不同品类的商品属性不同,无法做到公用的效果,业务上需要作出一些取舍;所以大家平时设计产品时,需要多和技术聊聊,能达到的效果尽量实现,不能话就需要作出一些妥协。

以上就是一个搜索功能的核心要点,一个看似简单的搜索框,其实内部是需要多个功能进行协同完成的;下次给技术要工作周期时,可不能直说我只想要个框,你就要几周时间,以免被人笑话。

上面这几个核心要点每个也是一个功能要点,都需要单独维护;除此之外还有一些功能,具体是否使用大家需要根据自己的业务来决定。

5. 搜索统计

做为平台重要的数据入口,对用户搜索词的统计功能有多重要就不在多说了。

通过对搜索词数据的统计,可以让运营人员直观的了解到用户对品类、品牌、价格的青睐趋势,为后期的活动运营、市场预测做好数据指导。

常见的统计维度有以下几个:

  1. 每日、每周、以及每月的搜索访问量统计;
  2. 搜索关键字的排名统计(组织方式:每日、最近一周、最近一个月、每月);
  3. 各品类、各品牌的搜索排名统计(组织方式:每日、最近一周、最近一个月、每月);
  4. 各品类、各品牌排名占比(组织方式:每日、最近一周、最近一个月、每月);
  5. 各价格区间的的搜索排名统计(组织方式:每日、最近一周、最近一个月、每月)。

6. 首页推荐词

在电商首页,平台为了推广活动,会在的搜索框下面显示一些热门搜索词或者推荐搜索词,而这些搜索词通常都会跳转到指定的专题或者活动页,以提升活动曝光率。

在上面讲解的【特定跳转】功能上增加一个首页推荐词字段加以区分就能实现这个功能。

7. 搜索历史

当用户选中搜索框时,下拉列表里面会出现之前的搜索词,方便用户快捷选择。

这个只需要在用户提交搜索词时,将搜索词保存起来,之后再调取出来即可,功能比较简单。

8928ff6f94a99de5fb6adb37290f3f13.png

8. 搜索推荐词

当用户选中搜索框并输入查询关键字,下拉列表中会出现相似的一些推荐词,并且推荐词后面有相应的商品数量。

这个功能是通过调用【商品搜索】功能的统计接口,实时获得的数据并显示前几位的数据。

ef7e3a6858e7c098fba05c44ce735bbe.png

9. 输入形式

通常查询关键字搜索默认的输入形式是文字形式,现在由于技术的发展,有实力的电商平台也引入了图片输入和语音输入方式。

其实内部逻辑一点都没有变,只是在原始的文字输入之上有加了一层识别组件,通过识别组件先将图片内容或者语音内容转为文字,再由文字进行搜索查询。

以上就是搜索功能的内容,还有遗漏的地方欢迎大家下方留言补充!

作者:JackLiu;个人微信公众号: 扬帆去远航(ID:Jackai_liu)

本文由 @Jack 原创发布于人人都是产品经理,未经作者许可,禁止转载。

题图来自Unsplash,基于CC0协议。



推荐阅读
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 数字账号安全与数据资产问题的研究及解决方案
    本文研究了数字账号安全与数据资产问题,并提出了解决方案。近期,大量QQ账号被盗事件引起了广泛关注。欺诈者对数字账号的价值认识超过了账号主人,因此他们不断攻击和盗用账号。然而,平台和账号主人对账号安全问题的态度不正确,只有用户自身意识到问题的严重性并采取行动,才能推动平台优先解决这些问题。本文旨在提醒用户关注账号安全,并呼吁平台承担起更多的责任。令牌云团队对此进行了长期深入的研究,并提出了相应的解决方案。 ... [详细]
  • 一:什么是solrSolr是apache下的一个开源项目,使用Java基于lucene开发的全文搜索服务器;Lucene是一个开放源代 ... [详细]
  • Lucene 全文检索技术入门
    一、搜索引擎的历史萌芽:Archie、Gopher起步:Robot(网络机器人)的出现与spider(网络爬虫)发展:excite、galax ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • solr导入mysql_Solr导入MySQL中的数据
    一、目标将MySQL数据库中的数据导入至Solr中,并且由Solr生成中文索引,使用Solr查询信息。二、数据导入1、将solr-8.2.0dist下的 ... [详细]
  • solr倒排索引(转载)
    原文地址:http:blog.csdn.netchichengitarticledetails9235157http:blog.csdn.netnjpjsoftdevarticle ... [详细]
author-avatar
晨雨心秋-济微路唐姜合
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有