背景

电商搜索引擎,是帮助顾客快速找到需要购买的商品的工具。

内容

衡量一个电商搜索引擎是否成功的标准是:顾客在一连串的搜索行为当中,是否越来越接近自己的真实需求。顾客越快进入商品页面去浏览商品,越表明搜索引擎推荐的搜索结果越精确。

电商搜索引擎,是传统搜索引擎的一个垂直领域,为了更好地学习搜索引擎的相关知识,首先看一个完整的搜索引擎的技术架构。

搜索引擎的技术架构

一个完整的搜索引擎技术框架,如图所示,搜索引擎的技术架构,分成 3 个部分:信息采集、建立索引库、提供检索服务。

搜索引擎技术架构
  • 1.信息采集

在互联网中发现、搜集信息和数据。通常,这个步骤是通过爬虫(Crawler/Spider)抓取网页来实现的。每个独立的搜索引擎都有自己的网页抓取程序爬虫。 爬虫 Spider 顺着网页中的超链接,从这个网站爬到另一个网站,通过超链接分析连续访问抓取更多网页,被抓取的网页被称之为网页快照。由于互联网中超链接的应用很普遍,理论上,从一定范围的网页出发,就能搜集到绝大多数的网页。

  • 2.建立索引库

对收集到的信息进行提取和组织建立索引库。搜索引擎抓到网页后,还要做大量的预处理工作,才能提供检索服务。其中,最重要的就是提取关键词,建立索引库和索引。根据应用场景的不同,其他可能的处理还包括去除重复网页、分词(中文)、判断网页类型、分析超链接、计算网页的重要度/丰富度等。

  • 3.提供检索服务

由检索器根据用户输入的查询关键字,提供检索服务。接受到关键词后,系统在索引库中快速检出文档,进行文档与查询的相关度评价,对将要输出的结果进行排序,并将查询结果返回给用户。通常,为了用户便于判断,除了网页标题和 URL 外,还会提供一段来自网页的摘要及其他信息。

其实搜索已经是一项非常成熟的技术,这里不额外再展开讨论了,有兴趣的可以网上了解学习更多这方面的知识。

这里介绍几个在搜索技术架构上比较重要的技术点:分布式索引、分布式搜索

关键技术点

1.分布式索引

分布式索引就是通过很多普通配置的硬件,同时进行索引建立的工作,最后进行索引的合并操作。这样处理的好处在于,具备可扩展性,当数据增加的时候,无须增加单台机器的存储设备,而是通过水平扩展,增加配置普通的机器来解决。

建立分布式索引,可采用 Hadoop 这类分布式系统进行构建:

  • Hadoop 实现了一个分布式文件系统(Hadoop Distributed File System),简称 HDFS。HDFS 有高容错性的特点,并且设计用来部署在低廉的硬件上。同时它提供高传输率来访问应用程序的数据,适合那些有着超大数据集的应用程序。
  • HDFS 的上一层是 MapReduce 引擎,用于大规模数据集的并行运算。概念 Map(映射)和 Reduce (规约),和它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借 来的特性。基于这些分布式特性,搜索索引建立可以非常容易地通过它来进行扩展。
  • 利用 Hadoop 的平台和 MapReduce 的机制,来实现建立分布式搜索索引,是非常好的实践。

2.分布式搜索

分布式搜索,是将原来的单个索引文件划分成 n 个切片(shards)。搜索时,并行的搜索这 n 个切片,每个切片返回当前 shard 的 topK 命中结果,然后将 n 个切片的局部 topK 进行归并排序,得到全局的 topK 排序结果。

分布式搜索的好处在于:

  • 更好的可扩展性,在用户访问次数和索引大小两个维度都具有水平扩展能力。
  • 更高的稳定性,容许部分失败,调用成功率显著提高。
  • 更灵活的全量更新策略,可针对不同类型的数据。
  • 更灵活的排序算法,可以针对不同类目,做定制化的排序。
  • 更好的可维护性和通用性,支持不同类型的搜索。

上一章教程

架构思维成长系列教程(九)- 个性化推荐引擎架构设计

该系列教程

架构思维成长系列教程

我的专栏

  • SpringBoot系列专栏
  • SpringCloud系列专栏
  • 高可用高并发实战专栏
  • 微服务架构实战
  • DevOps实战专栏
  • 程序化广告实战专栏

至此,全部介绍就结束了

-------------------------------

-------------------------------

我的CSDN主页

关于我(个人域名,更多我的信息)

我的开源项目集Github

期望和大家一起学习,一起成长,共勉,O(∩_∩)O谢谢

欢迎交流问题,可加个人QQ 469580884,

或者,加我的群号 751925591,一起探讨交流问题

不讲虚的,只做实干家

Talk is cheap,show me the code

架构思维成长系列教程(十)- 电商搜索引擎架构设计相关推荐

  1. 架构思维成长系列教程(七)- 大型电商系统架构设计

    背景 大型电商网站,指的是每日用户访问量达到数百万,每日页面访问量达到数千万乃至上亿级别的网站,达到这个规模的电商网站在国内不多. 内容 架构设计分为两部分:应用架构设计和基础架构设计 应用架构设计: ...

  2. 架构思维成长系列教程

    背景 架构的本质,是利用分.合.打散.重组等技术手段,对系统进行有序化重构,以达到减少系统"熵"的过程,使系统得以不断进化.即便你不需要在一线撸代码,多了解一些架构原则和思想,感受 ...

  3. 架构思维成长系列教程(十二)- 云平台架构设计

    背景 云平台是个非常宽泛的领域,一般分成:IaaS 基础设施即服务.PaaS 平台即服务.SaaS 软件即服务,本文侧重介绍企业私有云平台架构. 内容 云平台技术架构 云平台技术架构 如图所示,这是一 ...

  4. 架构思维成长系列教程(十四)- 不想当架构师的程序员不是好程序员

    引言 不想当将军的士兵不是好士兵. 很多程序员的梦想,就是将来能成为一名架构师. 包括我刚学编程那时候,也是以当架构师为目标,觉得不想当架构师的程序员不是好程序员,希望将来能成为一个优秀的架构师.就像 ...

  5. 电商系统架构设计系列(一):电商系统到底是如何设计出来的?

    引言 电商这个业务,和我们的生活息息相关.你可能对电商多少有一些了解,但是,即使是一个最小化的电商系统,它仍然非常复杂. 在这个系列的文章里,我们将一起以一个创业公司的 CTO 的视角,来设计一个最小 ...

  6. 关于大型网站架构系列:电商网站架构案例(目前最有深意喜欢的文章)

    算法与数据结构C++精解 ThinkPHP5.0+小程序商城构建全栈应用 AngularJS仿拉勾网WebApp开发移动端单页应用 Thinkphp 5.0实战 仿百度糯米开发多商家电商平台 原文出处 ...

  7. 大型网站架构系列:电商网站架构案例(1)

    大型网站架构系列:电商网站架构案例(1) 大型网站架构是一个系列文档,欢迎大家关注.本次分享主题:电商网站架构案例.从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型.除具备功 ...

  8. 大型网站架构系列:电商网站架构案例(3)

    本文章是电商网站架构案例的第三篇,主要介绍数据库集群,读写分离,分库分表,服务化,消息队列的使用,以及本电商案例的架构总结. 6.5数据库集群(读写分离,分库分表) 大型网站需要存储海量的数据,为达到 ...

  9. 大型网站电商网站架构案例和技术架构的示例

    大型网站架构是一个系列文档,欢迎大家关注.本次分享主题:电商网站架构案例.从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型.除具备功能需求外,还具备一定的高性能,高可用,可伸 ...

  10. 视频教程-web前端经典教程之电商专题页开发-HTML5/CSS

    web前端经典教程之电商专题页开发 曾就职于富士康电商平台.尚德机构流量中心,授课风格明显的特点就是旁证博引,喜欢用大型互联网企业的相关的案例来讲某个知识点-- 蒋新合 ¥299.00 立即订阅 扫码 ...

最新文章

  1. Ubuntu上配置VS Code调试C++
  2. 10行代码-原生JS双向数据绑定演示
  3. python全套视频教程下载-老男孩python全套视频教程百度云资源下载
  4. python教程是用什么博客写的-Python 有哪些好的学习资料或者博客?
  5. Python os.makedirs详细介绍
  6. CodeForces - 1480C Searching Local Minimum(交互+二分)
  7. ASP.NET Core Razor页面 vs MVC
  8. 利用matlab做dsp实验,华工DSP实验一利用Matlab进行频谱分析
  9. oracle 普通数据文件备份与恢复
  10. eventemitter_节点JS事件模块和EventEmitter
  11. Winform界面中实现通用工具栏按钮的事件处理
  12. 同名文件替换怎么恢复_U盘里被替换的文件怎么恢复?方法选对,其实很简单...
  13. 公众号 html5页面,微信公众号添加h5页面模板的操作方法是什么?
  14. 个人简历模板ppt大全
  15. windows10开启与关闭休眠模式
  16. ProcessingJoy —— 扭来扭去【JAVA】【GLSL】
  17. java 如何初始化数组_java中初始化数组的三种方式分别是什么
  18. 扫描仪软件测试自学,资讯详情-静态代码扫描工具 - sonarQube-柠檬班-自动化测试-软件测试培训-自学官网...
  19. hd集成显卡 linux驱动,ati 集成显卡HD3200 驱动安装
  20. ubuntu 制作本地源 离线安装

热门文章

  1. android 播放语音anr,Android语音合成出现ANR
  2. Visual C++——定时器(计时器)SetTimer函数
  3. javaWeb上传文件(jsp上传文件)
  4. 松下plc编程软件_松下PLC编程软件Control FPWIN Pro7.3.2.0
  5. Web安全攻防 渗透测试实战指南3
  6. 视频教程-汇编语言程序设计III-其他
  7. 使用Hackintool工具生成全新的序列号及更改黑苹果SN三码序列号简易版教程
  8. dom4j 解析xml Error on line 9717 of document 不允许有匹配 [xX][mM][lL] 的处理指令目标
  9. 查看MD04结果的程序 Production Planning - Extract data from MRP Table
  10. 自己做量化交易软件(32)小白量化实战6--仿通达信公式选股