概述
搜索引擎概述
- 桥梁——引导用户找到所求
- 满足用户需求的过程
- 连接人与内容、人与服务
- 爬虫:数据收集中心,互联网世界的缩影
- 索引系统:分析整理爬虫收集到的资源,为检索系统提供数据
- 检索系统:从预处理好的资源中挑选用户最满意的结果最快最好的展现。
基于MapReduce的互联网网页大数据建库系统
- 将网页库下载到文件系统中形成网页文件(HTML)(HDFS)
- 通过Parser提炼、抽取原网页文件生成处理过的网页文件(HDFS)。
- Inverter对处理过的网页文件进行倒排后,建立索引生成小索引文件(HDFS)
- 索引合并后形成正式索引文件(HDFS)后对外进行服务
具体流程如下:
- 目的:建立供检索使用的索引和摘要
- 输入:网页
- 输出:索引和摘要
- 处理:多轮map-reduce
- 页面分析和处理(parser-extractor)
- 页面属性小库输出(splitter)
- 小库正排转倒排(invert-index)
- 小库合并大库(index merge)
什么是正排?什么是倒排?
答:从url解析出关键词排列叫做正排,从关键词索引到url排列叫倒排。
如何去除url不一样但页面内容一样的网页?
答:布隆过滤器(Bloom Filter)。
- 由一个很长的二进制和一系列随即映射函数组成
- 布隆过滤器可以用于检索一个元素是否在一个集合中
- 优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率。
去重是依靠已有的标记进行去重,只需要维护很小的过滤器文件,将新页面通过Hash后,对比过滤器文件中的数据,再判断是否重复即可
广告系统概述
广告:搜索场景、网盟场景、
- 自主搜索流量:淘宝直通车、百度搜索推广、Google AdWords
- 联盟(外部)流量:淘宝阿里妈妈、百度网盟推广、Google AdSense
- 品牌广告:钻石展位、百度精准广告
- 按成交计费:淘宝客
广告系统付费模式:
- 搜索广告点击计费(CPC)
- 展示广告展现计费(CPM)
- 淘宝客(CPS)
- 搜索广告:网民、广告主、搜索平台
- 广告触发:关键词表达需求、网民输入的query和广告主购买的keyword进行匹配。
- CTR预估(click/show):点击率用户广告的排序和推左,保护网民的利益和提升搜索引擎的收益。
- 广告排序:关键词广告拍卖机制
平台要综合广告的质量、平台所获得的收益、用户的利益综合考量博弈,最终目标应是在不损害用户利益的条件下,保证平台的利润最大。
- 关键词分析(nlp文本分析、中文分词、句相似度、意图分析、主题词)
- 相关性分析(同义词、关联规则、宽泛匹配、用户偏好、cookie、session)
- 检测数据库索引(短语匹配、业务过滤、倒排索引)
- 广告展示(创意标题、描述、url)
- 广告排序(根据 点击率 * 价格 等、选择高质量广告)
推荐系统概述
推荐系统主要可以分为以下三个部分:
- ONLINE——在线:对数据进行实时产生(存在妥协、对时效性要求较强)NoSQL、websever、
- NEARLINE——近线:storm(ms级)、sparkStreaming(秒级)
- OFFLINE——离线:批量跑全天的数据(耗时的算法和计算)mapreduce、spark、hive、mahout
部分案例具体说明:
- 离线挖掘出的有效数据,想办法快速提供服务,通过类似NoSQL中间介质进行交换。OFFline给定一个离线挖掘任务,将数据转至NoSQL(redis、memcache、couchbase、hbase、leveldb、mongod(特点:快)、NoSQL可以存储大量的数据),再将数据对接到websever。
- Online首先必须保证WebUI,数据来自于websever、nosql等。
抽象出三种推荐方式
- 用户(相似兴趣/好友)——用户(喜欢)——物品
- 用户(历史、关联)——物品——物品
- 用户(喜欢、具有)——特征(包含)——物品
用户行为数据——不同的搜索引擎——初始推荐结果——过滤——排名——推荐
一个具体的案例
某音乐推荐系统🎵目的:为用户推荐其他音乐
初级版本:
- 用户——》反作弊——》行为日记收集——》数据清洗——》结构化入库(HDFS、Hbase)——》数据挖掘平台(推荐、分类、聚类)——》(nosql)缓存数据库(好友关系、音乐榜单、相关音乐(key-value))——》在线搜索引擎——》WebUI《——用户
反作弊:恶意刷屏、同行竞争
行为日志收集:展现日志+点击日志
数据清洗:去除冗余数据、非结构化到结构化
结构化入库:用户行为数据(mid1、mid2、mid3)
数据挖掘平台:人物画像
总结:从用户处收集数据、分析、挖掘后又反之推荐给用户。
进阶版本: 加入内容提供商
- 内容提供商——》操作平台(内容管理系统CMS)——》发布系统——》结构化入库(物品元数据:music_id、desc、tag、local、style、img、url)
- 结构化入库——》报表系统——》内容管理系统(迭代优化)
再进阶版本: 加入工程师、技术人员(干活)(任务是优化系统)
- 监控系统(缓存数据库、在线检索、数据挖掘等)——》工程师——》统一配置服务器(配置资源)——》在线搜索引擎
再再进阶版本: 加入产品经理 PM
- 分析调研系统《——报表系统——》评估系统——》PM——》需求发布系统——》工程师
技术总结:
- WebUI:安卓、前端、IOS、HTML
- 在线搜索引擎:webpython、java、Thrift RPC
- 缓存数据库:redis、Hbase、MongoDB
- 数据挖掘平台:Mapreduce、Spark、tensorflow、caffe、storm
- 统一配置服务器:Zookeeper
- 监控系统:Nagios、Zabbix
- 结构化入库:HDFS、HBase、MySQL
- 数据清洗:ETL、Mapreduce、Spark
- 行为日志收集:Flume+Kafka+Storm+HDFS/HBase/MySQL
- 发布系统:MQ:Kafka、ActiveMQ
- 报表系统:Hive、SparkSQL
- 需求发布系统:Jira、Bugzilla