首页 > 其他分享 >自然语言处理系列六十八》搜索引擎项目实战》搜索引擎系统架构设计

自然语言处理系列六十八》搜索引擎项目实战》搜索引擎系统架构设计

时间:2024-09-13 21:22:21浏览次数:12  
标签:实战 架构设计 系统 搜索引擎 搜索 六十八 自然语言 分布式

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】

文章目录

自然语言处理系列六十八

搜索引擎项目实战》搜索引擎系统架构设计

公司做项目的一般流程是需求分析、产品设计、系统架构设计、各个模块详细设计、编码开发、测试、上线。需求分析和产品设计不用多说,这个阶段还没有技术开发人员实质性介入,但会参与讨论需求分析和产品设计的合理性评估讨论。产品设计出来后,产品经理一般会和技术开发人员开会讨论,产品开发能否实现,工作量评估,产品细节是否合理等,一般在产品大方向不变的情况下会有适当调整,之后可能会再次开会讨论,几轮后会确定产品设计原型,大概的开发工作量及工期。再接下来该系统架构师来登场了,架构师会根据需求和产品设计文档做技术架构及选型、模块拆解及各个模块的详细设计。架构设计好之后会把相关模块分配给相应的开发工程师及算法工程师,之后编码开发、测试、上线。这是软件开发的一般流程。
这节我们讲的是搜索引擎系统架构,那么做系统架构的都需要考虑哪些因素呢?首先的理解产品需求,知道实现产品需要哪些数据、技术框架、模块拆解以及各个模块的相互依赖的关系及整个流程。对于电商平台的商品搜索功能,那么数据就需要商品数据,商品数据从哪里获取呢?比如业务数据库Mysql是有的,但对于商品搜索的索引数据需要初始化和增量更新量部分,初始化直接用Mysql不太容易多台机器分布式创建索引,再就是大规模创建索引,Mysql数据库压力也会很大或者崩溃。所以可以考虑把Mysql的数据同步到Hadoop平台后再用Spark分布式的创建索引就能很好的实现需求。从这方面来讲,系统架构不仅要实现功能,还得考虑怎么设计更合理。了解了数据的来龙去脉,还得知道设计几个模块子系统,每个系统用哪些技术框架更好等。下面通过架构图如给大家详细的看一下,架构如图19.3所示。
在这里插入图片描述

图19.3 搜索引擎架构图
搜索和下面讲到的推荐算法系统是比较类似的,这个架构图包含了各个子系统或模块的协调配合、相互调用关系,从部门的组织架构上来看,目前搜索一般独立成组,有的是在搜索推荐部门里面,实际上比较合理的应该是分配在大数据部门更好一些,因为依托于大数据部门的大数据平台和人工智能优势可以使搜索效果再上一个新的台阶。下面我们从架构图从上到下的来详细的讲一下整个架构流程的细节。
1)搜索数据仓库搭建、数据抽取部分
(1)和搜索相关的Mysql业务数据库每天增量抽取到Hadoop平台,当然第一次的时候需要全量的来做初始化,数据转化工具可以用Sqoop,它可以分布式的批量导入数据到Hadoop的Hive;
(2)和搜索相关的Flume分布式日志收集可以从各个Web服务器实时收集比如搜索用户行为、埋点数据等,可以指定source和sink直接把数据传输到Hadoop平台。
2)大数据平台、搜索数据集市分层设计、处理
在大数据平台建设搜索相关的数据集市,分层设计,和推荐大致相同。
3)离线算法部分
(1)基于Spark平台分布式来创建搜索的索引数据库,后续的增量索引一般靠消息队列的方式异步准实时更新。
(2)Spark从Hadoop加载用户画像以及商品画像的特征数据训练基于分类模型的Rerank二次重排序算法模型,来预测对搜索的候选商品被点击的概率,因为特征工程里加入了和用户个性化的特征工程,所以搜索整体排序呈现个性化的特点。如果想增加个性化的程度,可以适当把搜索的候选集合适当扩大一些。
(3)离线计算的部分结果可以更新到线上Redis缓存里,在线Web服务可以实时从Redis获取推荐结果数据,进行实时推荐。
4)在线Web搜索接口服务
(1)在线Web搜索接口服务,先从Solr/ES搜索集群里面获取和关键词相关的搜索结果作为候选集合,然后从Web项目初始化加载好的Rerank二次重排序模型进行实时点击率预测,对搜索结果进行重排序,截取指定的前面的搜索结果进行展示。这个过程会读取一部分Redis缓存数据。
(2)App客户端、网站可以直接调用在线Web搜索接口服务进行实时展示搜索结果。由于个性化搜索比普通搜索处理更复杂,所以在性能上会有所下载,但整体在可接受的范围内,一般可以单独开个搜索区域进行展示,不替换之前的传统搜索。
从架构中看,一个完整的搜索引擎项目涉及的技术框架也是非常多,其中个性化的因素也涉及了用户画像系统,用户画像系统不仅仅可以用在推荐、搜索中,它是一个公司级别的通用系统,运营推广决策都会用到它。和其它部门的系统如何对接,同时适应多种应用场景就需要我们架构设计一个合理的系统。在搜索引擎最关键的核心技术之一垂直搜索引擎部分,即通过输入关键词进行检索的相关度搜索框架,下面结合业务需求对比几个搜索框架,以便确定用哪个框架更合适。

搜索引擎项目代码实战

搜索引擎项目代码实战内容可参见
《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】书籍。
更多的技术交流和探讨也欢迎加我个人微信chenjinglei66。

总结

此文章有对应的配套新书教材和视频:

【配套新书教材】
《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】
新书特色:本书从自然语言处理基础开始,逐步深入各种NLP热点前沿技术,使用了Java和Python两门语言精心编排了大量代码实例,契合公司实际工作场景技能,侧重实战。
全书共分为19章,详细讲解中文分词、词性标注、命名实体识别、依存句法分析、语义角色标注、文本相似度算法、语义相似度计算、词频-逆文档频率(TF-IDF)、条件随机场、新词发现与短语提取、搜索引擎Solr Cloud和Elasticsearch、Word2vec词向量模型、文本分类、文本聚类、关键词提取和文本摘要、自然语言模型(Language Model)、分布式深度学习实战等内容,同时配套完整实战项目,例如对话机器人实战、搜索引擎项目实战、推荐算法系统实战。
本书理论联系实践,深入浅出,知识点全面,通过阅读本书,读者不仅可以理解自然语言处理的知识,还能通过实战项目案例更好地将理论融入实际工作中。
《分布式机器学习实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】
新书特色:深入浅出,逐步讲解分布式机器学习的框架及应用配套个性化推荐算法系统、人脸识别、对话机器人等实战项目。

【配套视频】

推荐系统/智能问答/人脸识别实战 视频教程【陈敬雷】
视频特色:把目前互联网热门、前沿的项目实战汇聚一堂,通过真实的项目实战课程,让你快速成为算法总监、架构师、技术负责人!包含了推荐系统、智能问答、人脸识别等前沿的精品课程,下面分别介绍各个实战项目:
1、推荐算法系统实战
听完此课,可以实现一个完整的推荐系统!下面我们就从推荐系统的整体架构以及各个子系统的实现给大家深度解密来自一线大型互联网公司重量级的实战产品项目!
2、智能问答/对话机器人实战
由浅入深的给大家详细讲解对话机器人项目的原理以及代码实现、并在公司服务器上演示如何实际操作和部署的全过程!
3、人脸识别实战
从人脸识别原理、人脸识别应用场景、人脸检测与对齐、人脸识别比对、人脸年龄识别、人脸性别识别几个方向,从理论到源码实战、再到服务器操作给大家深度讲解!

自然语言处理NLP原理与实战 视频教程【陈敬雷】
视频特色:《自然语言处理NLP原理与实战》包含了互联网公司前沿的热门算法的核心原理,以及源码级别的应用操作实战,直接讲解自然语言处理的核心精髓部分,自然语言处理从业者或者转行自然语言处理者必听视频!

人工智能《分布式机器学习实战》 视频教程【陈敬雷】
视频特色:视频核心内容有互联网公司大数据和人工智能、大数据算法系统架构、大数据基础、Python编程、Java编程、Scala编程、Docker容器、Mahout分布式机器学习平台、Spark分布式机器学习平台、分布式深度学习框架和神经网络算法、自然语言处理算法、工业级完整系统实战(推荐算法系统实战、人脸识别实战、对话机器人实战)。

上一篇:自然语言处理系列六十七》搜索引擎项目实战》搜索引擎项目概述
下一篇:自然语言处理系列六十九》搜索引擎项目实战》搜索框架技术选型

标签:实战,架构设计,系统,搜索引擎,搜索,六十八,自然语言,分布式
From: https://blog.csdn.net/weixin_52610848/article/details/142150025

相关文章

  • fps游戏刷怪系统代码逻辑架构设计
    FPS游戏的刷怪系统主要负责生成怪物并在合适的时机和位置将它们放入游戏世界。在设计刷怪系统时,我们需要考虑以下几个方面:刷怪点:在游戏地图上设置一些预定的刷怪点,这些点用于生成怪物。可以将刷怪点存储在一个容器中,供刷怪系统使用。刷怪波次:将怪物刷怪划分为多个波次,每......
  • 【北京迅为】i.mx8mm嵌入式linux开发指南第四篇 嵌入式Linux系统移植篇第六十八章u-bo
      迅为i.mx8mm开发板特点: 性能强:i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核,主频高达1.8GHz,2GDDR4内存、8GEMMC存储。 PMIC:采用PCA9450A电源管理,是NXP全新研制配套iMX.8M的电源管理芯片,有六个......
  • 2024.9.10 搜索引擎+字体
    今天是人工智能的第一节课!我们主要学了引擎的搜索以及字体两部分,干货满满!有一种走了20年弯路的感觉(⊙︿⊙)第一次拥有了博客账号,在我小学的时候我妈妈会用博客记录生活,对于博客有一种熟悉的陌生感hhha【知识小课堂1】搜索引擎分为两类:一、目录式分类搜索引擎,其特点是检索的准确......
  • 17个Mybatis Plugs注解:Mybatis Plugs插件架构设计与注解案例(必须收藏)
    MyBatisPlugins框架提供了一种强大而灵活的机制,允许开发者通过实现Interceptor接口来扩展MyBatis的核心功能。这种插件化的方法无需修改MyBatis源码,即可引入诸如性能监控、日志记录、数据加密、查询缓存等额外功能。通过注解如@Intercepts、@Signature等,开发者可以精确地......
  • 【系统架构设计师-2024年真题】案例分析-答案及详解
    更多内容请见:备考系统架构设计师-核心总结索引文章目录【材料1】(软件架构设计与评估)问题1问题2问题3【材料2】(系统设计与建模)问题1问题2问题3问题4【材料3】(嵌入式)问题1问题2问题3【材料4】(数据库缓存)问题1问题2问题3【材料5】(W......
  • 搜索引擎小技巧
    搜索引擎小技巧:①使用filetype指令可以查询特定格式的文件,比如doc\txt\ppt\pdf,搜索格式为:关键词+空格+filetype:+文件格式比如:初等数论filetype:doc,搜索结果均为与初等数论有关的doc文档。②使用site指令可以搜索指定网站的内容,搜索格式为:关键词+空格+site:+网站,比如:U盘site:j......
  • 巧用搜索引擎(2024/9/10)
    今天学习了巧用搜索引擎,可以更好地使用搜索引擎,例如想要搜索考研内容,想要减少推广可以使用“内容空格➕关键词/—关键词”的方法来试试,使用filetype指令来搜索想要的文件格式,可以使得搜索效率更高,还有intitle指令和site指令很有用,使用英文双引号可以强制搜索,收获了4个字体网站,可......
  • 2024.9.10 学会了如何巧用搜索引擎搜索到自己想搜索的特定内容
    课程开始时,老师首先介绍了搜索引擎的基本原理,包括它们是如何索引网页、如何根据关键词匹配搜索结果的。这让我意识到,搜索引擎并非简单的工具,而是一个复杂的系统,它的工作原理对于提高搜索效率至关重要。接着,老师详细讲解了如何使用各种搜索技巧来缩小搜索范围,找到更精确的结果。例......
  • 2024.9.10 人工智能教育技术学 第一课时搜索引擎
    首先学习了搜索引擎的分类1.全文搜索2.目录式搜索搜索引擎在搜索中的技巧:1.使用减号(减去不需要的东西)减号前记得加空格;可以利用这个功能筛选掉一些广告和不需要的内容2.(1)使用filetype指令搜索格式:关键词+空格+filetype+文件格式(2)site指令搜索格式:关键词+空格+site:+网站(3......
  • 9.10|搜索引擎小技巧|字体安装
    搜索小技巧:✰注意指令的标点符号要是英文格式①使用filetype指令可以查询特定格式的文件,比如doc\txt\ppt\pdf,搜索格式为:关键词+空格+filetype:+文件格式比如:初等数论filetype:doc,搜索结果均为与初等数论有关的doc文档。②使用site指令可以搜索指定网站的内容,腰索格式为:关键词......