直通车关键词展现指数 每一次搜索 都会展现吗

摘要:小程序从一开始仅支持全名称搜索,到后来的模糊搜索,再到自定义关键词搜索,不断进阶的搜索功能,有效降低了小程序触达用户的门槛,同时也提升了小程序的推广效果。然而,如何设置关键词才更有效?搜索策略你又知道
小程序从一开始仅支持全名称搜索,到后来的模糊搜索,再到自定义关键词搜索,不断进阶的搜索功能,有效降低了小程序触达用户的门槛,同时也提升了小程序的推广效果。然而,如何设置关键词才更有效?搜索策略你又知道多少?这期《小程序公开课》将为你一一揭晓!一知:小程序自定义关键词功能须知1、谁能用?已有过正式发布版本的小程序可以使用“自定义关键词”功能,门店小程序暂不支持。2、能添加多少?目前,小程序的自定义关键词最多可设置10个,支持每月修改三次,每次审核时间为七天。3、搜索排名规则是什么?关键词的设置需与小程序本身的业务相关,必须是小程序所提供的服务,或者小程序提供服务的品牌。审核通过后,小程序的自定义关键词会与小程序服务质量、用户使用情况、关键词相关性等因素一起影响搜索结果。登陆小程序后台后,进入“推广”然后点击“添加关键词”开发者可在后台看到关键词推广效果二懂:小程序搜索规则详解&&& 也许有人会问,开放自定义关键词后我的小程序就能轻松被发现了吗? No No,也没有那么简单。且不说关键词名额只有10个,读懂它的搜索规则才能更好地助你达到事半功倍的效果。小程序关键词配置生效后,会和小程序的服务质量、用户使用情况、关键词相关性等因素,共同影响搜索结果。服务质量:简而言之就是“你用小程序用得爽不爽”,如果一家小程序商店功能越完善,体验度越好,就意味着它的服务质量越高,在关键词搜索上获得的曝光率就越大,反之亦然。例如电商行业,目前常见的小程序有“购物车”“支付”等基础功能,小程序的服务质量不仅取决于功能样式,加载速度、页面布局、交互设置等都会影响用户的体验。因此,这就督促开发者好好鞭策自己,提升小程序的服务质量了。用户使用情况:由用户使用频率等客观数据所决定,在后台的推广模块可以看到。根据用户的使用情况、访问次数等数据,商家可以对小程序搜索进行优化:提升产品或者变换关键词。如果用户对你家的小程序使用率越高,与同类性质的小程序比,你上热搜的可能就更大。关键词相关性:指的是关键词和小程序所选行业和服务具有相关性,关键词的相关性越高,搜索的结果就越好,反之亦然。如果一个做餐饮的企业选择了一个服装业的关键词,那搜索的结果就不太好了。商家要想做好小程序关键词推广,就要思考用户关键词的搜索套路,建议在设置关键词时从行业的定位、目标用户的特征出发。&三用:小程序关键词搜索优化的建议了解规则 排名更靠前如下是胖梨经过多方了解统计得出的小程序排名规则占比:1、小程序上线时间:越早上线,优势越大,曝光次数越多(5%)2、描述中完全匹配出现关键词次数越多,排名越靠前(10%)3、标题中关键词出现1次,且整体标题的字数越短,排名越靠前(35%)4、微信小程序用户使用数量越多,排名越靠前(50%)填写关键词 警防入坑填写小程序自定义关键词时,开发者一定不能忽略两个参数:关键词填写数量和审核日期。每个小程序最多可以输入10个关键词,这10 个关键词必须一次性添加后再提交审核。假如仅添加了1个关键词就提交,那就只能等7个工作日的审核时间,通过后才能再添加其它关键词。这样一来,不但时间成本高,还可能会错过流量红利巅峰期,所以,关键词添加需谨慎!填写关键词 词汇选择很关键1、微信小程序或标题或描述最好由地域名、品牌词或核心关键词等组成,这样符合一般大众搜索规律。尽可能选择短词、指数大的词,从关键词本身来说,有品牌词、竞品词、产品词、人群词等,目前小程序还没有形成强有力的品牌概念,所以建议选取一个品牌词即可,其他名额按需留给其他词。例如现在排名靠前的小程序,就插入了相关产品词或竞品词,如“优惠券”“购物”“京东”等这些用户使用频率较高的词语,当用户搜索这些词时这个小程序就能有展现的概率。三大因素,帮你上热搜前面也讲到了“小程序服务质量、用户使用情况、关键词相关性”对关键词推广尤为关键。除了做好小程序本身的功能架构外,增加用户的使用情况也很重要。目前搜索看到的排名都是以用户曾使用过的小程序排名为先。所以小程序运营者可以配合前期的预热,比如建立相应名称的公众号,做好公众号的推广曝光,建立相应的微信群聊等等,以此触及更多用户转发、评论或收藏,这样不仅可以增加用户使用量以提高搜索排名,还可以增加搜索曝光的入口。目前小程序关键词占位非常重要,越早发布竞争越小,甚至可以做到霸屏的效果。微信借助小程序打通“社交+内容+应用+转化”,关键词搜索对小程序推广和运营尤为重要!掌握以上关键词搜索策略,让你从容运营小程序,轻松获取流量红利!
本文仅代表作者观点,不代表百度立场。本文系作者授权百度百家发表,未经许可,不得转载。
分享到微信朋友圈
打开微信,点击 “ 发现 ”
使用 “ 扫一扫 ” 即可将网页分享至朋友圈。
扫一扫在手机阅读、分享本文
百家号作者平台APP
扫码下载安卓客户端
便捷管理文章信息
随时查看文章收益搜索引擎营销中的关键词竞价排名系统的设计与实现 - 山东鑫诺网络科技有限公司
产品&/&Product Center
百度排名优化&/&Contact
山东鑫诺网络科技有限公司
联系人:王伟
地 址:山东省淄博市周村区科技工业园26号
seo专业知识
搜索引擎营销中的关键词竞价排名系统的设计与实现
搜索引擎营销中的关键词竞价排名系统的设计与实现:
搜索引擎营销中的关键词竞价排名系统的设计与实现,搜索引擎营销(SEM)作为互联网营销中最具影响力的推广方式之一,一直 是各个品牌商以及电商所青睐并且用于推广其品牌或产品的方式,他们花费大量 的预算在搜索引擎中购买关键词,并进行关键词及其相应广告创意的推广从而吸 引客户。通常情况下关键词的出价越高,所对应的广告创意的排名也就越高,所 以他们用修改关键词出价的方式去改变他们在搜索引擎中购买的关键词的排名, 然而在这一过程中,如果每次修改出价都由人工来完成,那么这个过程将十分繁 琐并且效率低下。因此迫切地需要利用计算机来代替手工去完成这些工作。
本文分析上述现状以及当前市场上一些相关软件产品的功能特点,再加上来 自客户的需求,共同构成了整个关键词竞价排名系统的功能需求。本文基于这些 功能需求并对其进行充分的分析与设计,并利用Java技术对整个系统进行编码实 现,其中包括最核心的竞价逻辑控制以及竞价算法的设计与实现,并利用多元线 性回归模型去预测关键词在全地域下的平均排名,利用时间序列上的回归模型去 预测关键词在未来一段时间内的展现量和点击量。整个基于搜索引擎营销的关键 词竞价排名系统最为重要的几个模块分别是竞价模块,出价和排名探测模块,以 及系统中用于数据建模的模块。最后,通过对系统的各个模块进行功能测试以及 性能测试,保证了整个系统符合最初的需求设计,并能够有效地满足用户的需求。
通过对整个系统的分析与设计,实现了基于搜索引擎营销的关键词竞价排名 系统,它能够以尽可能低的价格达到用户的期望排名,并且对关键词的展现量进 行有效的预测。通过对该系统的实现,减少业务人员手工操作,并且有效的降低 了用户预算的花费。
在互联网快速发展的今天,互联网营销逐步成为市场营销最重要的方式之一。 广告主通过在互联网上投放广告创意从而达到推广产品或者品牌的目的。互联网 营销的方式主要有两种,一种是广告主在媒体的平台上投放广告创意,另一种是 搜索引擎营销[1],本文主要是介绍的系统就基于搜索引擎营销。
在搜索引擎[2]中广告的展现主要有两种,一种是通过对关键词的搜索展现广 告,当用户在搜索关键词的时候就会在搜索结果中展示相关的匹配创意;另一个 是通过其它合作网站去展示这些广告,当网站作为媒体主与搜索引擎合作的时候, 当用户访问这些网站的时候,搜索引擎的广告投放平台就会向这个网站的页面投 放广告创意。在搜索营销中最著名的关键词竞价广告系统是Google公司的 AdWords,而在国内与之相似的是百度公司的百度凤巢[3],它们将广告作为搜索 结果展示给用户,当用户对广告进行点击的时候广告主就需要对其进行付费,这 种付费模式是以CPC(Cost Per Click)的方式,广告主只需要对点击进行付费,而 对于广告的展示是不需要付费的。
图1.1中所示为百度的推广链接广告,当有广告主购买了&奶粉&这个关键词, 或者与奶粉相关的关键词,那么当搜索引擎的用户在搜索&奶粉&这个词的时候, 那些广告主的广告创意就得以匹配并展现出来。
搜索引擎营销(SEM)是一种新型的网络营销模型,它以搜索引擎作为基础 支撑进行全面而有效的网络推广,不同的用户有着不同的需求,品牌客户关注的 是点击率,而电商客户更关注点击后的订单转化率。为了达到上述的目的,他们 就需要在各个媒体上进行大量的广告宣传,而这些媒体中,搜索引擎无疑是流量 最大的广告媒体之一。这些客户的目的就是以一个合理的价格去购买一些关键词, 并且使得关键词创意尽可能的获得一个较好的排名,从而获得尽可能高的点击率 或订单转化率。
在过去,竞价排名的工作主要是用人工来完成,他们不断的去修改价格,并 查看排名,如此不断尝试直到关键词创意达到一个理想的排名,但是这样的效率 极其低下,因为每一个SEM帐户下都有大量关键词的出价需要手动去修改,关 键词的数量少则几千,多则上万,如此的情况下会造成了很大的人力损耗,另一 方面人工的修改速度远远达不到所需要的速度,这样就会造成不能及时的修改价 格,从而造成过多的消耗预算,或者是预算无法按时花完。无效花费过多,以及 有效花费不能及时转化,就会对广告主造成很大的损失。
本文描述的竞价系统就是为了避免上述问题的出现,关键词竞价排名系统能 够根据用户设置的期望排名,最低出价(minPrice)和最高出价(maxPrice),在 [minPrice,maxPrice]范围内,程序根据用户设置的竞价策略及时的调整出价,从而 达到理想的广告的排名。关键词竞价排名系统关键的几个部分是:竞价系统在高 并发的请求下保持高性能,因为系统每天需要对数以万计的关键词创意进行自动 竞价,如果没有一个很好的性能,根本无法在有效时间内完成竞价工作。竞价算 法中,优化每一轮竞价的出价次数也是很重要的,因为关键词的量很大,所以减 少算法中一次竞价,那么对于数以万计的关键词来说,将会大大的提高整个竞价 周期。另一个是关键词排名的计算,由于搜索引擎的搜索结果在不同的地域是有 所不同的,所以我们需要利用少量的地域排名去预测出关键词创意在全地域范围 内的平均排名。展现量,点击量等等相关数据的预测。这些主要是用于动态的调 配预算以及后期的系统优化。
1.2国内外研究现状分析
搜索引擎营销的到目前为止已有数10年的发展历史,但与之相关的软件产品 并不多,目前的搜索营销市场,人们还主要停留在手动调整与优化的阶段,其中 与之相对应的职位称作&搜索优化师&。
随着近几年的发展,国内外还是有一些公司研发出了一些试探性的软件产品, 这其中就包括,其中比较著名的有美国的AdGrooroo公司,他们开发了一系列的 基于SEM的产品,包括如下几个主要产品,SEM Insight,它是用来分析和挖掘 出竞争对手的排名较好的广告创意,把它们展现给用户,以便于用户去借鉴这些 广告创意以提高自己的关键词创意排名,它的另外一个功能就是估计竞争对手的 预算,从而给客户一个预算参考。另一款产品Trademark Insight就是为客户检测 品牌,当系统发现有别的用户非法利用自己的品牌名称去做搜索营销的时候就会 发出相应的提醒,并发送给相应的搜索引擎公司的业务人员去消除这些非法广告 创意。Display Insight这款产品主要是为了监测和收集竞争对手的广告创意,用户 通过分析竞争对手的广告创意从而改进自身的广告创意。最后一个产品Link Insight通过分析竞争对手的广告创意,去发掘对手的URL链接,通过对这些链 接的标识和分析,分析这些链接的质量度并改进自身链接的质量度。
在国外还有一些类似的SEM软件产品,其中有一款叫做&Advanced Web Ranking&的产品,它的主要功能是作为第三方监测系统去统计用户所购买的关键 词在搜索结果页面的排名以及通过在分析关键词的搜索结果页面从而得到竞争对 手的相关信息。
而在国内也有相关企业研发了一些相应的搜索营销相关的软件产品,其中比 较有名的应该是TopSem,它们研发中了一款竞价相关的软件产品,但其功能较 为单一,仅仅支持单个地域的竞价。由于搜索引擎的搜索结果在不同的地域会有 明显的区别,通常在一线城市,关键词的竞争会更加激烈,所以更多的时候用户 希望在所有的地域达到一个平均的排名,所以这个系统在这一方面有较为明显的 缺陷。
在搜索引擎营销中的关键词的排名主要由两方面因素影响,一方面是用户对 所购买的关键词的出价,另一方面是关键词的质量度,质量度由关键词的历史点 击量等等因素决定,由于质量度是由历史积累的结果,对使用者来说是很难去影 响或者改变,所以对于最终的排名,只能通过改变出价的方式去改变关键词在搜 索引擎中的排名。搜索引擎公司之所以这样做的目的是因为他们的目标是为了最 大程度的获取利润,如果没有用户点击的,那么无论出价有多么高,那个搜索引 擎公司也无法获得盈利,所以他们通常会有很多的算法模型去达到这个最优化的 利润,而利用关键词的质量度就是其中的一种方式。即使出价高的用户所购买的 关键词并不一定会排名更好,但是提高出价总会提高一部分排名,而排名高了之 后,点击量也会相应的提高,那么质量度也就会提高,所以关键词的出价对于整 个关键词的排名具有很大的影响,正是出于这个原因,利用修改出价的方式去改 变排名的方式是可行的。
综合比较国内外的一些比较有名的搜索营销产品,可以看到在国外的搜索营 销领域,他们的软件产品主要是通过对竞争对手数据的分析去帮助用户提高自身 的竞争力。而在国内,搜索引擎营销的产品主要是作为对搜索引擎推广效果的监 测以及关键词竞价排名。这其中比较耗费人力并且能迅速提高营销效果的软件产 品当属关键词竞价排名的功能,因为当用户所购买的关键词排名提高之后,就会 很明显的提高它的点击率,从而使得订单的转化率也得到很大的提升。但是,由 于搜索引擎在不同的地域下会有不同的搜索结果,这一点会导致竞价排名的局限 性,所以这一点是关键词竞价排名系统的关键,与此同时,由于关键词的数量会 很大,所以关键词竞价排名系统是一个高并发的系统,既要保证在高并发下的系 统稳定性也要处理高负载时的系统响应速度。解决好了上述的几个关键问题,那 么就有可能研发出一套高效的关键词竞价排名系统。
1.3论文主要研究内容
综合国内外相关的搜索营销的软件产品,本文将以关键词自动竞价为核心设 计并实现整个系统。主要工作包括:
1.关键词竞价功能设计与实现,在关键词竞价功能里通过一些竞价算法,使 得每一轮竞价时间尽可能的短,从而提高竞价效率。
2.针对当前市场上关键词竞价产品的不足,利用多元线性回归模型去计算关
键词的在全地域的平均排名,从而提高竞价排名的准确性。
3.设计实现并发的控制策略使得整个竞价系统高效地对批量的关键词进行竞 价排名。
4.通过对历史数据的采集和分析,利用时间序列上的模型去预测关键词的展 现量,给用户预算的分配提供依据。
5.设计并实现一个物料管理功能的界面,使用户可以方便地管理物料信息以 及控制关键词竞价的相关配置信息。
1.4论文组织结构说明
基于上述的背景以及技术理论的介绍,本文将在接下来的章节里将从软件工 程的角度对整个关键词竞价排名系统进行分析与设计,下面介绍本文的章节安排:
第一章介绍了搜索营销相关的基本概念以及基于搜索营销的关键词竞价排名 系统实现背景。
第二章主要介绍了设计和实现整个关键词竞价排名系统所需要的技术和和理 论支持,包括一些应用技术的基础和算法理论。
第三章是系统的需求分析,在这一章节里主要分析了关键词竞价排名系统所 要实现的功能包括来自用户的需求以及对当前一些相关产品的借鉴。
第四章对整个关键词竞价排名系统进行了详细设计,并从实现的角度介绍了 所需要的技术和理论。
第五章主要介绍了系统测试,分别对系统的各个模块进行了测试用例的设计 与测试的执行。
第六章对本文进行了总结以及对未来的展望,包括未来可能开发的新功能的 描述。&
搜索引擎营销中的关键词竞价排名系统的设计与实现
第二章技术及理论支持
本章主要介绍构建整个关键词竞价排名系统所要用到的技术和理论进行介 绍,其中包括最基本的编程语言和系统所使用到的框架技术,以及它们将在系统 中如何应用。
2.1理论支撑
2.1.1多元线性回归分析模型
回归分析[4]是用于解决应变量与一组自变量之间的关系的统计方法,竞价系 统会使用它计算关键词的搜索排名计算,因为各个用户对同一关键词的推广地域 不同,所以,相同出价的关键词在那些竞争激烈的地域排名会相对靠后,反之在 竞争不激烈的地域排名相对靠前,即关键词在不同地域的搜索结果是不同的。基 于上述情况,我们对于关键词排名的计算要采用全地域的排名,地域分割的最小 单位是省、直辖市、港澳台、国外。这样一共有40多个地域,如果在竞价的过程 中要去抓取不同地域的关键词排名,显然效率太低,所以我们需要利用几个典型 的地域,去预测关键词在全地域的平均排名。所以需要进行采样进行估算,建立 模型,这样,以后每次计算排名的时候就只需要去抓取几个采样地域的关键词排 名,然后利用模型去预测关键词在全地域的排名。
在统计学里,回归分析包括了许多建模和变元分析技术,主要关注的是自变 量与因变量之间的有关系。更特殊一点的情况是,回归分析主要研宄一个自变元 的变化对因变量的影响。并且通过自变量的值去估算变量的值。回归分析被广泛 的应用在数据预测领域,它和机器学习领域[5]是有一定的重合的。在回归分析领 域发展出了许多的技术,包括线性回归,普通最小二乘回归等等。回归分析很依 赖于数据的处理和组织。
回归分析是研宄一个随机变量Y对另一个(X)或者一组(Xl,X2, X3...XK) 变量的相依关系的统计分析方法。它的研宄对象主要是客观事物之间的统计关系, 它是建立在对客观事物进行大量的试验和观察的基础之上,用来寻找隐藏在不确 定现象中的统计规律性的统计方法。回归分析方法是通过建立统计模型研宄变量 间相互关系的一种有效工具。
在回归分析中,如果有两个或者两个以上的自变量,就称为多元回归[6]。而 多元线性回归是研宄多个自变量与一个因变量间是否存在线性关系。在多元线性
回归分析中,并不是要将所有对Y有影响的自变量都要加入回归方程中,我们需 要从中去除那些次要的,可有可无的变量,重新建立简单的回归方程,所以需要 对每个变量进行显著性检验。最后利用相关系数去检验回归方程的显著性。 相关系数计算公式为:
SST式(2-1)
判定系数越大,则说明自变量对因变量的解释程度越高,自变量引起的变化占总 变动的比例也就越高,观察点在回归直线附近越密集。它的取值范围是0到1, 所以当判定系数越接近与1则说明拟合的效果较好。
将预测对象按照时间顺序排列起来,构成一个所谓的时间序列[9],从这一段 时间内的数据的变化规律以及变化趋势去预测今后可能的变化趋势,变化规律, 这就是时间序列上的预测法。时间序列模型也是一种回归模型,它的原理是一方 面承认事物发展的延续性,运用过去的时间序列的数据进行统计分析就能预测事 物的发展趋势;另一方面又充分考虑到偶然的因素影响而产生随机性,为了消除 随机波动的影响,利用历史数据进行统计分析,并对数据进行适当的进行趋势预 测。时间序列预测的优点是,计算速度快,对模型的参数有动态确定的能力,精 度较好,采用组合的时间序列或者把时间序列和其他模型组合效果更好,缺点是 不能反映事物的内在联系,不能分析两个因素,只适用于短期预测。
一个时间序列往往是多个变化形式的叠加或者耦合:长期趋势变动,搜索引擎营销中的关键词竞价排名系统的设计与实现,季节变 动,循环变动以及不规则变动。在实际中遇到的时间序列往往有三个特性:趋势 性、季节性和非平稳性。这里的平稳性指的是宽平稳,其特性是序列的统计特性 不随时间的平衡而变化,即均值和协方差不随时间的平稳而发生变化。确定模型 时,往往采用下面的方法。对样本计算自相关系数函数与偏见相关函数。如果是 截尾或者是拖尾的,说明已经是平稳的序列可以使用ARMA模型。否则说明时间 序列不平稳,可以做1阶差分再进行判断,利用上述方式进行处理, 直到Vf;是平稳的。一般情况下,只需要1到2次差分即可将非平衡的序列平稳 化。当样本在时间序列上呈现平衡化后,我们可以采用ARMA模型进行建模工作, ARMA(p,q),ARMA的定阶准则为:选择p和q使得式(2-18)的值达到最小。
AIC = n ln^2 +2(p + q +1)式(2-18)
其中n是样本容量。若得到的p,q可以使上式达到最小值,则可以确定ARMA(p,
ARIMA[1()]是自回归模型和滑动平均模型综合而成,用于季节变动的销售量预 估,或者市场预测等等。ARIMA模型的基本思想是:将预测对象随时间推移而 形成的数据序列视为一个随机序列,用一定的数学模型来近似描述这个序列。这 个模型一旦被识别后就可以从时间序列的过去值及现在值来预测未来值。其中较 为关键的一步是,利用差分去消除时间序列的非平衡性。
关于时间序列上的数据平衡性。如果数据非平稳,往往导致出现&虚假回归& 表现在:两个本来没有任何因果关系的变量,却有很高的相关性(有比较高的R2 )。 例如,如果有两列时间数据表现出一致的变化趋势(非平衡的),即使它们没有任 何有意义的关系,但进行回归也可能表现出较高的可决系数。如果时间序列上的 数据满足下列条件:1.均值E(Xt)=|i是与时间t无关的常数;2.方差Var(Xt)=o2 是与时间t无关的常数;3.协方差Cov(Xt,Xt+k)=Yk是只与时期间隔k有关,与 时间t无关的常数。则称该随机时间序列是平衡的,而该随机过程是一个平衡随 机过程。除了利用公式之外平衡性检验也可以通过图示进行判断:给出一个随机 时间序列,首先可以通过该序列的时间路径图来粗略地判断它是否是平稳的;平 衡的时间序列在图形,上往往表现出一种围绕其均值不断波动的过程,如图2.1(a) 所示;而非平稳序列则往往表现出在不同的时间具有不同的均值(如持续上升或 者持续下降)如图2.1(b)所示。
在实际的应用中我们需要更加准确的判断数据是否平稳,这里使用随机时间
序列的自相关函数(auto correlation function, ACF )如式(2-19)所示。
P =7 /y式(2-19)
自相关函数是关于之后期k的递减函数,实际上,对一个随机过程只有一个 实现,因此,只能样本自相关函数,一个时间序列的样本自相关函数定义为:
从公式中容易看到,随着k的增加,样本自相关函数下降且趋于零。但从下 降的速度来看,平稳序列要比非平稳序列快得多。
注意:确定样本自相关函数某一数值是否足够接近于0是非常有用的,因为 它可检验对应的自相关函数是真值是否为0的假设。
Bartleet曾证明:如果时间序列由白噪声过程生成,则对所有的k&0,样本自 相关系数近似地服从以0为均值,1/n为方差的正态分布,其中n为样本数。
也可检验对所有k&0,自相关系数都为0的联合假设,这可通过如下QLB统 计量进行,如式(2-21):
因此:如果计算的Q值大于显著性水平为a的临界值,则有1-a的把握拒绝 所有p (k&0)同时为0的假设
2.1.3领域模型驱动设计
领域模型[11]是软件项目的公共语言核心。模型是人们头脑中形成的与项目有 关的概念集合,它用术语和关系反映了领域的深层含义。这些述语和相互关系提 供了模型语言的语义,模型语言是专门为领域量身裁剪的,而且十分精确,以便 支持技术开发。它是一条到关重要的纽带,将模型与开发活动结合在一起,并使 模型与代码紧密绑定。在软件中,专门用于解决领域问题的那部分通常只占软件 系统的一小部分,这与其重要性远不成比例。
领域模型驱动设计的步骤主要包括以下几个方面:
首先,识别领域模型中的实体对象与值对象。对于实体对象,需要有该对象 的标识以及生成方式,并确定关联关系。对于复杂的引用关系,我们可以使用查 询数据库来解除其中一部分的引用关系。
其次,我们需要划分聚合的边界,找到聚合的要结点,对于聚合内部的所有 对象的访问,都只能够通过要结点的访问去操作。
然后,需要考虑资源库对象。通常,我们只需要对聚合根考虑资源库。需要 考虑对象的构造,同时还需要考虑标识问题,最后需要考虑要对象的复制问题, 是否采用原型模式。如果需要复制,则要考虑聚合中的对象,哪些需要创建新对 象,哪些需要复制。
最后,需要考虑对模块的划分,应该按照业务逻辑的内聚性对象进行模块划 分。
2.2系统实现技术介绍
1.JAVA并发编程
从JDK1.5开始,JAVA引入了 concurrent包[12]以及相应的并发编程的相关类,
JDK提供的这些类和方法在极大程度上简化了并发编程,其中,JDK提供的线程 池更加能够帮助我们维护一个高效的并发任务队列。
2.WebService的对比与选择
现流行的WebService主要有两种实现方式,一种是REST WebService,另一 种是基于Soap的WebService[13],以下从几个面对二者进行对比:
消息格式:基于SOAP的WebService它的消息格式是基于XML的,由于 XML的解析和封装过程,由于这个原因基于SOAP的WebService在性能上会稍 有损失。而RESTFUL WebService的消息格式是可以由开发者定义的,可以是XML 格式也可以是Json格式。
用户状态保持:如果应该需要上下文信息与对话状态管理,那么应该采用 SOAP。基于 SOAP 的 WebService 有相关的 WS-Security,WS-Transactions 等等相 关标准以及框架。而REST对于这些工作都要自己实现。
由于基于SOAP的WebService有较为成熟的体系,所以在关键词竞价排名系 统里的采用的是基于SOAP的WebService作为部分模块间的交互方式。
3.WEB开发框架
作为整个竞价系统UI层的用户管理模块,为了提高效率,所以我们采用全 部的开源框架,以提高开发效率,在Web Server端我们采用主流的Java Web项 目的开源框架组合Struts2+hibenate3.2+Spring3.0,在Web展现层使用 Jsp+JavaScript+Jquery[14]。
Struts2[15]在系统里主要利用它的URL Mapping功能以及对页面的参数接收和
页面跳转。
Hibernate3.2[16]是最优秀的ORM开源框架之一,这系统里我们主要利用它来 实现DAO层的开发,通过ORM框架的使用可以方便的利用对象的操作关联到对 数据库表的相关操作,并且对于简单的CRUD操作,ORM框架都进行了封装, 所以只需要很简单的代码就可以实现CRUD的操作。
对于Spring3.0[17],我们主要利用它的Ioc容器进行对象的创建和管理,利用 Aop的功能进行日志的打印控制和整个系统的事务控制。
系统采用典型的J2EE[18]*层结构,分为表现层、中间层(业务逻辑层)和数 据服务层,其关系如图2.2所示。
4.数据库存储引擎选择
在使用MySql数据库创建表的时候,主要有两种类型的存储引擎,搜索引擎营销中的关键词竞价排名系统的设计与实现,分别是 InnoDB和MyISAM,这两种类型各有优劣,视具体应用而定。基本的差别为: MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型 的表强调的是性能,其执行数度比InnoDB类型更快,因为在设计表结构的时候 需要考虑到这些因素。
5.Web容器与Web服务容器
作为Web UI和Web Server的承载容器,这里选择的是开源的Apache Tomcat6,作为最成功的开源Web容器之一,Tomcat以其高性能以及稳定性赢得 的很多客户和厂商的认可,所以这里我们选择它作为我们的Web UI和Web Server 的容器。同样为Apache下的另一款开源产品Axis2,作为一个基于SOAP的 WebService框架或者说WebService容器,以它的稳定性和丰富的辅助插件,一直 是SOA领域的最受关注的服务容器之一,所以有本系统中采用Apache tomcat + Axis2的组合作为,Web应用容器和Web服务容器。
2.3本章小节
本章主要介绍了设计和实现关键词竞价排名系统所需要的理论支撑以及会使 用到的技术,这里主要选择JAVA语言作为系统的开发语言,使用多元线性回归 模型对关键词创意的排名进行预测,以及利用时间序列上的拟合模型对创意的展 现量和点击量进行预测,通过这一章节的介绍,为第四章的系统设计提供了完整 的技术理论支持。&
搜索引擎营销中的关键词竞价排名系统的设计与实现
第三章需求分析
本章主要展开对整个关键词竞价排名系统的需求分析,通过本章节的功能定 义,刻画出完整的关键词竞价排名系统。这里的功能需求一方面来自客户的直接 业务需求,另一方面来自于对市场上现有产品的功能的借鉴以及增强。
3.1系统需求概述
广告主通过购买搜索引擎中的关键词,利用搜索引擎去推广他们的品牌或者 商品。他们一方面希望以较为高效的方式去管理他们的关键词以及相关信息,另 一方面他们也希望利用第三方的系统去监测搜索引擎推广的效果,对于效果的监 测可以作为后期对系统的升级。整个关键词竞价排名系统主要功能模块如图3.1 所示。
图3.1关键词竞价排名系统的功能模块图
对于每一个需要推广的关键词,用户给出一个最高出价,一个最低出价,以 及期望的排名范围。关键词竞价排名系统需要利用用户设定的参数以尽可能最低 的出价达到用户期望的排名。
关于创意排名计算是需要利用地域模型来计算。由于地域模型是要被竞价模 块调用的,所以地域的模型的计算是先于进行竞价程序开始运行的,它利用历史 报表,去建立地域排名的计算模型,在竞价的过程中会利用这个模型去计算排名 以调整出价。同时,因为许多中小型用户的预算是有限的,所以在有限的预算内, 需要把这些预算花在最有效的计划或者关键词上面,这样我们就需要一个时间序 列上的预测模型去计算未来一天或者若干天的点击率和展现率。客户的这些需求 作为关键词竞价排名系统的主要需求来源,支撑着整个项目的功能开发,下面就 具体针对每一个功能进行具体的需求分析。
3.2功能需求
3.2.1物料管理模块
物料管理是指对整个系统中的物料信息进行添加,修改,删除等相关操作的。 整个关键词竞价排名系统的物料包括,帐户信息,推广计划,推广单元,关键词 和创意。其中关键词是整个竞价系统的核心数据,所以需要对它进行有效的管理, 因为关键词的数量很多,所以需要对它们进行有效的分类,这里采用的是树形的 分层结构,把具有相似主题的关键词放在同一个推广单元内,把多个相似的推广 单元统一化归到一个推广计划下,并且,一个帐户可以有多个推广计划。如此构 成了一个以帐户为根结点,以关键词为叶子结点的一个树形结构。每一个层级都 需要有各自的管理功能,包括同帐户信息管理,推广计划管理,推广单元管理, 关键词与创意管理。下面将依次介绍各层级的功能需求。
帐户管理的功能需求主要包括添加用户,编辑用户,删除用户。用户信息主 要包括:用户名,密码,以及一些与竞价相关的配置信息,这些信息包括:账户 余额不足提醒的额度,接收余额不足提醒的邮箱地址,关键词的定向投放地域, 关键的最高出价,关键词最小出价,关键词的竞价策略,在下一级的推广计划和 推广单元里也有相应的字段设置,他们之前的关系是:如果关键词本身有相关的 设置时,就以自身的设置为准,否则去查看推广单元的设置,如果推广单元没有 做相应的设置那么再像上一级去查看设置,直到帐户这一级。这里会对这些参数 的设置做出限制,必须在某一级上做相应的参数设置。
推广计划管理的功能需求包括添加计划,编辑计划,删除计划。推广计划是 百度推广账号管理关键词/创意的大单位,在推广计划级别,可以进行设置推广地 域、设置每日预算、选择创意展现方式、设置推广时段管理等操作。
以下是一些名词的解释:推广地域是指用户希望关键词创意在哪些地域被用 户在搜索引擎中搜索并展示。每日预算是指当用户的日消费额度的限制,当用户 的日消费额达到的设置的每日预算,那么关键词创意就会停止投放,那么在搜索 引擎中也就无法搜索出用户的关键词创意。推广时段是指用户可以自己选择关键 词创意的投放时段。
推广单元管理的主功能需求包括添加推广单元,编辑推广单元,删除推广单 元。推广单元是百度推广账号管理关键词/创意的小单位,推广单元的建立与关键
词的选择息息相关,需要将含义相近、结构相同的关键词纳入同一个推广单元, 以便更有针对性地撰写创意。
关键词及创意管理:添加关键词,编辑关键词,删除关键词。添加创意,编 辑创意,删除创意。关键词是作为搜索引擎的搜索内容,通过在搜索引擎的搜索 框内输入关键词,在搜索结果中会展示出与关键词相对应的广告创意。
它们的层级关键从高到低依次为:帐户、计划、单元、关键词和创意。以上 的四个层级的信息里都会有:推广地域,最低出价,最高出价,理想排名,以及 竞价收敛精度这些信息。当对关键词开始竞价的时候,首先查看关键词这一级的 信息,如果在关键词这一级设置了这些信息,则以这一级的配置信息为准,否则, 依次向上查找上一级的配置信息作为自己的配置信息。
物料管理模块除了管理物料信息之外,还有一个重要的功能就是设置关键词 的竞价状态,包括设置关键词参与竞价时候的相应参数信息,开启和暂停竞价。
关于物料管理模块的用例图如图3.2所示。
理帐户倍息
1理推广计划佶息
類::::::::管理推广单元信悤
用户.. 管理关键词信E
管理创意倍息
管理关键词竞价状态
图3.2物料管理模块功能用例图
3.2.2竞价模块
竞价模块是整个关键词竞价排名系统的核心模块,负责接收竞价请求并开展 对每个关键词的竞价工作。竞价模块的核心功能是根据用户设置的关键创意的期 望排名以及用户可以接受的最高和最低出价,通过竞价算法的计算最合理的出价&
以达到用户的需求。
监听竞价请求,这里是采用请求驱动的方式进行,每当接收到竞价请求的时 候才开始对关键词的自动竞价。
接收并处理请求,请求各类包括:物料的删除,下载更新,包括帐户信息, 计划信息,推广单元信息,关键词信息以及创意信息。
根据用户的设置开启对关键词竞价,利用关键词的当前出价以及关键词的当 前排名利用竞价算法去计算是否需要调整关键词的价格或者关键的出价和排名都 已经达到了用户的期望目标是否需要结束该关键词的竞价。
竞价过程中对关键词排名进行计算,这里的计算模型为2.1.3节中多元线性回 归分析。
3.2.3关键词排名预测模块
在竞价模块对关键词进行排名竞价的时候,需要计算关键词在全地域的平均 排名,然而如果去探测将近40个地域后,再去计算排名,这样计算排名的方式会 很耗时,系统完成一轮竞价的周期会比较长。因此需要采用排名预测的方式进行 关键词排名的计算。计算关键词的排名需要利用它在不同的地域下的排名进行拟 合,这里涉及到的功能包括:报表下载和建立模型两个部分,下面将介绍这两个 部分的主要功能和任务。
报表下载:利用搜索引擎提供的API下载各种报表存入本地数据库,这里主 要是下载关键词的历史数据信息,可以通过对这些数据的分析和处理得到有效的 数据进行拟合。
建立并存储模型:这里主要是建立关键排名的地域模型,利用报表中关键词 在不同地域的排名去建立关键词在全地域的平均排名的计算模型,并且从可能的 模型中选择最优的模型保存入库。模型的更新:模型的建立是根据历史数据以及 用户的设置信息,所以需要不断的去检查用户的信息并判断相关信息是否发生改 变,如果发生改变的话,则需要重新根据条件去建立新的模型,与此同时,也要 不断地检查模型是否是根据最新的数据建立起来,建立模型的数据必需包括前一 天以及之前的所有数据。
3.2.4关键词展现量预测模块
关键词的展现量的预测主要是用来帮助用户及时调整投放策略,例如,当用 户的预算不足的时候,需要将剩余的预算分配到最能带来收益的推广计划下。对 关键词展现量的预测主要是通过对历史数据的分析并建立相应的数学模型。
与地域模型的建立类似,我们也需要报表下载功能以及数据准备功能。报表 下载:利用搜索引擎提供的API下载各种报表存入本地数据库。整理报表数据: 将下载的报表进行数据的提取,并组合成合适的数据格式进行提供给系统进行建 模。建立模型:根据前一天以及之前的数据进行模型的建立,与按地域计算排名 不同的是这里没有模型的选择问题,只要根据历史数据建立起模型并将预测值入 库即可。模型的更新:同样这里也需要每天去更新模型,因为模型仅仅预测未来 一天的数据,所以要不断的根据前一天的数据去更新模型。
3.2.5关键词出价及排名探测模块
竞价模块对关键词的出价,最终还是需要调用搜索引擎提供的出价API接口, 由于搜索引擎提供的接口,功能较为单一,所以需要对现有的接口进行封装以适 应整个系统的需求。这里需要封装一个接口中,接收出价请求,包括关键词和出 价以及相关参数。用例图如图3.3所示。
预测关键词在全地域的平均排名,其根源还是需要得到用户所购买的关键词 在具体某个地域下的排名。这里所要做的是抓取指定页面的页面信息,并解析它, 返回需要的内容信息,这些返回的信息提供给竞价模块进行排名的计算。这里主 要是去抓取搜索结果页面的关键词创意,通过对创意的URL的解析,去定位用户 所购买的关键词创意,利用用户特有的标识去确定创意是否出现在结果页面以及 相应的排名。
3.3非功能性需求
软件产品的非功能性需求,是指软件产品为满足用户业务需求而必须具有除 功能需求以外的特性,只有在软件开发和测试阶段完成了这些需求,才能使得软 件的质量得到保证。软件产品的非功能性需求主要包括系统的性能、稳定性、可 靠性、可维护性、安全性等等。下面将对系统中几个重点的非功能性需求进行描 述和分析。
1.性能需求
因为一个帐户下有很多个关键词,要在短时间内完成对所有关键词进行竞价 需要系统有很高的性能,这样就需要设计一个高并发的系统,以达到系统的高性 能需求。竞价过程的每一步都需要尽可能的优化,因为每一小步的优化对于整个 系统的性能提升都会有很大的影响。其次系统需要有对并发量的控制,为了保证 每个模块间的稳定性需要控制请求以及处理请求的频率与量级使之相匹配,让它 既不会发生请求过多,无法及时的处理,也不会发生请求处理线程的空闲情况, 这样才能保证系统高效的运行。对于整个关键词竞价排名系统,需要保证同时有 10万个关键词在同时竞价的时候保证系统能够正常的运行,并在24小时之内完 成一轮竞价。其中,对于出价和排名探测模块要保证在25个工作线程在满负荷的 条件下,持续正常工作,包括能够正常的进行关键词出价以及能够正确地监测到 关键词的排名。
本系统的运行要求是保证7*24小时不间断地运行,提高系统的稳定性除了需 要提高系统本身的稳定性之外,还需要对系统进行监测,因此需要有系统的监控 模块对系统进去实时的监控,当发现竞价系统崩溃的时候能够及时发出报警,并 通知相关人员去解决问题。
3.可扩展性
系统按照功能分成了三个部分:关键词竞价排名系统Server端(竞价执行与 竞价算法),用户管理界面部分,搜索及出价服务,竞价系统的Server端与UI通 过Http请求进行通信,UI部分词竞价请求和相关信息发送Server端,从而开启 帐户下的关键词竞价。而竞价系统的Server端和搜索及出价的服务采用基于Soap 的WebService进行通信。这样模块化的开发方式,大大的提高了系统的可扩展性。
一个安全的软件系统需要阻止非法用户的登录以及非法地修改系统内部数 据,同时保证系统在受到安全性攻击的时候可以做出及时的防御相应。最初级的 安全性要求包括,用户的身份认证,以及对登录用户的权限控制。安全性是系统 安全稳定运行的前提,实现系统的安全性需要大量的技术支持。只有满足系统安 全性的软件产品才能够使用户放心安全地使用。对于整个关键词竞价排名系统有 两个模块需要有安全控制:一个是用户操作管理模块,必须是合法的登录用户才 能够进行系统的操作。另一个是对出价和排名搜索模块,对于它的调用必须要经 过身份的认证的合法调用。
3.4本章小结
本章主要分模块介绍了关键词竞价排名系统的需求分析,包括物料管理模块, 竞价模块,关键词出价及排名探测模块,关键词排名预测模块,关键词展现量的 预测模型。同时也介绍了各个模块之间的交互问题,最后介绍了整个系统的非功 能性需求,由于整个系统处于高并发的处理状态,所以对非功能性需求有着很高 的要求,比如系统的性能与系统的稳定性,如果没有这些作为保证,搜索引擎营销中的关键词竞价排名系统的设计与实现,那个整个系 统就无法有效的运行,所以对于系统的非功能性需求也需要进行详细的设计与实 现。&
搜索引擎营销中的关键词竞价排名系统的设计与实现
第四章系统设计与实现
针对第三章节提出的系统需求,本章将对这些功能的实现进行详细的设计, 包括如何使用相关的理论和技术去分析和实现相关的功能。本章首先从系统的整 体来描述各个模块之间的协作关系,再分别对各个模块展开详细的设计。
4.1系统总体架构
关键词竞价排名系统的完整模块交互图如图4.1所示,用户通过UI管理界面 进行物料管理,同时可以添加和修改关键词相关的配置信息,并发出竞价请求, 开启对关键词的竞价,另一方面关键词排名预测模块作为一个独立的模块单独运 行不断的去根据新的报表数据去更新地域模型,与此同时展现量点击量预测模型 也作为一个独立的模块运行,并不断地生成或者更新现有的模型。
图4.1系统模块交互图
整个系统采用模块化的开发方式,模块之间通信方式有:http请求,基于soap 的web service,以及RMI的方式,其实后两种方式也是基于http的。如此模块 化开发的一个好处就是,使得模块内部实现高内聚,而模块之间达到低耦合的特 点,这样子有利用系统的扩展以及模块内部的易维护性。另一方面,将整个系统 模块化的开发,有利于分布式的部署,提高整个系统的性能,比如,出价和排名 探测模块是整个系统的瓶颈所在,因为所有的关键词的出价以及排名的搜索都需 要它来完成,随着用户的数量增多,关键词的数量很快达到百万千万,或者更多, 这样一台服务器上单独部署一个模块就不能够满足整个系统的性能需求,这时就
可以在多台服务器上部署多个模块,我们只需要配置一下服务的调用地址即可, 这样就达到的为系统&分流和减压&的效果。
4.2竞价模块的设计与实现
4.2.1竞价模块核心控制类的类图说明
图4.2中所展示的是自动竞价模块的类图,其中,BidServer作为竞价服务器 的核心类,监听收到的竞价请求,并根据请求的不同类型进行相应的处理:对于 接收到的竞价请求,生成竞价的任务ScriptTask,提交给任务执行的线程池,在
ScriptTask的执行过程中又会生成其它的三个子任务,分别是SearchTask用于
搜索关键词创意的排名,BidAlgoTask用于计算合适的出价,PriceTask进
行出价,通过循环的顺序执行,最终达到预定的排名;对于接收到的下载报表的 请求,则生成下载报表的任务提交给任务执行的线程池。&
图4.2竞价模块类图
这里主要是用到多线程并发时处理生产者消费者问题的思想,因为处理每一 个竞价请求的都需要一定的时间,即使是采用并发的去处理也不能在同一时间接 收并处理所有的请求,因此需要设置一个类似于&请求池&的数据结构,所有接收 到的请求并不会被直接处理,它们会被放置到池中,处理请求的线程数量是固定 的,他们只负责从&请求池&中获取竞价请求(包括在请求中的各个参数)并进行 处理。并且,因为关键词的数量很大,为了加快竞价的速度,这里不需要准确的 处理每一个竞价请求的返回,即相当于对于每一个竞价请求不需要返回响应,只 要在竞价系统里进行一定量的容错处理即可。为了使竞价程序的并发性能达到最 好,可以根据竞价过程的等待时间与计算时间的比例,得到最佳工作线程数量。 竞价线程池的线程数量:Nthreads = Ncpu * Ucpu * ( 1 + W/C )。其中:Ncpu = CPU 的数量,Ucpu=目标CPU的使用率[0,1],W/C=等待时间与计算时间的比率, 最终计算得到的线程数量为25。
4.2.2竞价模块设计
竞价模块的设计思想为:整个竞价模块作为一个HttpServer,接收UI模块发 来的Http请求,根据请求的路径和参数不同,将执行不同的功能。其中 BidWebHandler是用来接收Http请求,并将请求保存到BidServer的请求队列中, 在BidServer里启动一个线程用于取出队列中的请求,如果是竞价请求,则为其 生成一个任务线程BidScheduleTask,BidScheduleTask会根据不同的策略生成并执 行不同的ScriptTask,这里的竞价策略是用脚本编写,可以动态的加载到程序中 去运行。ScriptTask会依次的执行出价任务,搜索任务,出价计算的任务,循环 这三个过程直到搜索得到的结果中,关键词的排名满足用户的需求。
图4.3竞价模块时序图
每一个关键词的竞价过程就是以下步骤的循环,直到满足条件停止对这个关 键词的竞价:
a.对关键词进行出价。关键词最开始有用户设置的一个初始价格,并且每次计 算排名结束后,如果排名不满足要求,会给关键词出一个新的价格。
b.搜索用户投放的关键词创意在搜索引擎中的排名位置 C.根据排名计算下一轮出价时需要设置的价格
d.重复a, b, c三个步骤,直到满足用户的期望排名,或者在已有条件下无法 达到用户的期望排名,则结束竞价。
4.2.3最优价格查找策略
这里主要是利用二分查找[19]的思想,二分查找的前提条件是,数据是排好序 的,而在搜索引擎里,关键的价格也是基本按照位置排序的,所以满足二分查找 的基本前提条件。
查找策略的逻辑流程图如图4.4所示,整个查找过程分为如下的几个步骤:
第一步,设置一个初始价格并搜索计算创意排名。
第二步,用第一步计算出来的排与用户设置的期望排名相比较,如果用户如果排 名比期望差,则利用二分法提高出价;如果排名比期望好,则利用二分法降低出 价。并且,修改后的价格要比用户设置的最高价格要低,并且比用户设置的最低 价格要高。
第三步,判断二分法的上界和下界的合法性,并判断算法的是否到达终止边界, 这里采用上界和下界之间达到指定区间差做为二分法的终止条件,如果未到达终 止条件,则循环执行步骤2。
第四步,结束二分查找后,得到的价格为用户期望排名的最优价格。
4.3关键词出价及排名探测模块的设计与实现
4.3.1出价和排名探测模块核心类图说明
在出价与排名探测模块里,最重要的两个功能就是对关键词进行出价以及搜 索关键创意在搜索结果页面的排名。如图4.5所示,接口 SetPriceAndSearchServicelF作为接口提供给竞价模块进行调用,它的实现为类 SetPriceAndSearchService, S etPriceAndSearchS ervice 的功能实现依赖于 SetPriceService和SearchService两个类,这两个类是最终实现出价功能与搜索功 能的两个核心类。
4.3.2出价模块功能设计
出价模块的调用时序图如图4.6所示,竞价模块需要调用出价服务时,首先 它会先根据提供的wsdl组织成相应的Soap消息,然后发送给服务接口,服务接 口根据接收到的Soap消息并解析它,确定需要调用的方法以及参数并去调用最终 的服务类的出价方法。出价模块的调用时序图如图4.6所示。
4.3.3排名探测模块功能说明
搜索模块的实现与出价模块类似,竞价模块对搜索模块的调用也是通过基于 Soap的WebService进行的,时序图如图4.7所示。
图4.7关键词创意搜索时序图
在服务端接收到调用请求的时候,需要根据参数去构造需要抓取的页面连接, 在得到页面连接之后,去下载页面并解析页面的内容,返回需要的页面信息。搜 索模块的调用时序图如图所示,竞价模块发送Soap消息即搜索关键创意的任务请 求,WebService容器Axis2接收并解析Soap消息,去调用相应的SearchKey类中 的searchKey()方法,在searchKey()方法中发送Http请求,去搜索引擎请求相应 的结果页面,并将得到的搜索结果页面进行解析[20],将创意信息返回给竞价模块。 因为搜索引擎在不同地域的搜索结果是不同的,所以与searchKey方法相对应的
是searchKeyByRegion方法,searchKeyByRegion可以通过Http代理服务器去搜
索代理服务器所在地域的搜索结果页面,这样就实现了在不同地域搜索创意排名 的需求。
4.3.4 WebService 原理图
Web服务[21]的Service端发布后,会生成一个由WSDL描述的服务定义,包 括服务提供的方法以及方法的参数和返回值类型。这里由Axis2框架进行wsdl 的解析,生成相应的客户端,这样子在客户端可以像调用本地方法一样去调用远 程的Web服务,Axis2帮我们封装了底层的实现细节,Axis2根据WSDL以及用 户的具体调用可以生成相应的SOAP消息并发送到服务端。在服务端,Web服务 容器同样是利用Axis2进行SOAP消息的解析,最终调用相应的服务端的方法。 如果调用的方法是有返回值的,则会将返回值同样的方式形成SOAP消息再次返 回到客户端,在客户端通过对消息的解析,得到最终期望的返回值,其原理图如 图4.8所示。
4.3.5出价与排名探测模块功能的服务发布
出价模块作为竞价系统的一个外围模块,其主要功能有两个,一个是修改关 键词在搜索引擎中的价格,另一个功能就是搜索广告的排名信息。由于这个模块 的独立性较强,所以把它作为一个WebService单独开发。
主流的搜索引擎会为我们提供一套出价的API,但是由于它并不符合我们竞 价系统的需求,所以需要对其进行修改和封装,形成我们自己的一套API,并且 把这套API以WebService的接口方式提供给竞价系统使用。
关于服务的接口描述,这里采用的是WSDL (Web Service Description Language)进行WebService接口的描述,WSDL是基于XML语法描述了与服务
进行交互的基本元素,它的主要标签包括:
Type:用户描述消息类型
Message:通信消息的数据结构的抽象类型化定义,描述了 Web Service的使
用消息有的效负载。定义Message元素的方式取决于使用RPC样式还是文档样式 的消息传递。
portType:对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以 由一个或多个服务访问点来支持。
complexType:是系统用于描述复杂数据类型,这里往往是用户自定义的数据
operation:是用来描述对外暴露的接口方法及其相关的信息包括Input和 Output用来描述方法的参数以及返回值。
address:用于描述Web Service所在地址。
WSDL作为服务的结构描述主要是给调用者开发以及调用WebService接口 提供帮助,通过WSDL调用者可以知道这个服务里有什么可以调用的接口方法 以及方法的参数以及返回值。
关于服务的发布,我们这里使用的是apache的axis2作为服务容器,我们是 通过把符合axis2要求的代码部署到axis2容器里,这里采用的是axis2的war包,
所以最终需要把它放到应用容器tomcat里形成最终可对外发布的WebService。 axis2主要功能包括:SOAP消息的解析与构造,提供阻塞和非阻塞的客户端API, 以及寻址功能。
图4.9出价与排名探测模块的部署架构图
由于出价和排名探测模块是用基于Spring框架的开发,这里在发发布服务的 时候需要考虑到Spring与Apache axis2的兼容性,首先要考虑的是Spring的事 务控制对于Axis2的影响,由于Spring的事务控制是基于代理来实现的,而Axis2 对于服务层的发布也会依赖于代理,所以这里会有一定的冲突,解决冲突的最简 单的方法就是在服务层上面再加一层类实现,在这层类里实现里只需要调用相应 的Service里的方法即可,不需要额外的其它任何实现。这样就可以正常的将业务 逻辑发布成相应的WebService,提供给外部的程序调用。
4.3.6服务调用者的身份认证
由于我们用服务容器采用的apache axis2所以,我们采用apache Rampart作 为axis2的一个组件加入服务容器从而对服务的调用进行认证。Rampart是基于 Apache WSS4J的一个具有WS-Security功能的开源组件,它有多种方式对于准备 调用服务的用户进行认证,这里我们选择的是UsemameToken的机制。
它的基本原理如图所示,利用rampart组件的配置,每一个请求SOAP消息 都会加上一个security的报头,报头里最主要的用户信息通常为用户名和密码。
当服务和它的调用者没有使用一条安全的通信通道的时候,我们就需要采取 一些措施去保护用户的密码不会被暴露给其它第三方用户。这里我们需要对真实 的密码进行Digest处理,生成文本的摘要,并且在生成的字串后面加上一些随机 的字符,以及生成的时间戳。这个摘要的生成过程如下所示。
digest = Base64_encode(SHA-1(nonce+created+password))
生成的UsemameToken格式如下所示。
&UsernameToken xmlns="wssecurity-secext-1.0.xsd"&
&Username&user&/Username&
〈Password Type="#PasswordDigest"&******&/password& &Nonce&******&/Nonce& &Created&T07:12:19:573z&/Created&
&/UsernameToken&
在安全通信的需求上面,我们需要完成两个功能:
一个是客户端用户服务端的公钥加密,并把加密的消息发送给服务端,然后 在服务端得到客户端的传过来的加密消息后,我们拿着服务端的私钥进行解密。
另一个是服务端在返回给客户端信息之前,用客户的公钥加密,然在客户端 得到服务端传过来的加密消息后,我们用客户的私钥进行解密。这样,就可以保 证客户端发送的消息以及服务端返回的信息都是保密并不可被第三方破解的。我 们使用KeyTool生成两个证书(Jks),client.jks和server.jks,其中,把客户端的 公钥保存到服务端的jks文件里,把服务端的公钥保存到客户端的jks文件里,可 以利用jdk自带的KeyTool生成相应的证书。生成的jks文件里的密钥是需要使用 口令保护的,我们需要在使用的时候利用生成jks文件里的口令把密钥取出。这
些加密和解密的方式是基于Handler模式的,它像一个拦截器,客户端和服务端 发送和接收消息的时候进行消息进行加密和解密操作。这种方式并不是很安全, 只要检测到上述的通信,就可以轻松的得到用户名和密码。因此安全使用 UsernameToken认证机制最好的方法是使用安全的传输机制,比如HTTPS。如果 用户使用UsernameToken在其它的不安全的传输层,则必须把保证 UsernameToken是被加密过的。
通过Rampart进行用户身份谁的客户端服务端的交互过程如图4.10所示,首 先,客户端通过axis2将对服务的调用信息封装成SOAP消息,Rampart再根据在 客户端配置的服务安全策略生成相应的UsernameToken以及一些验证信息加入的 SOAP消息的报头里,最终发送到服务端,把接收到的SOAP消息根据服务端的 服务安全策略进行解析,如果通过验证则进行相应的服务调用并返回给客户端相 应的值,如果没有通过验证则直接把出错信息返回给客户端。&
maxThreads=M150M minSpareThreads=M25M maxSpareThreads=M75M enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth=MfalseM sslProtocol=MTLSM keystoreFile=Mpath/to/server.jksM keystorePass=Mpassword" /&
第三步,编写Password Callback函数,这里需要实现CallbackHandler,经过
配置这里可以直接得到解密过的Username和Password,在得到的Username和
Password与数据库中的用户信息做对比从而做出判断,用户是否有权调用和访问 服务资源。
第四步,通过配置WS-Security Policy Language,用于来定义WebService。这
里主要是配置安全的声明,主要有两个安全声明,一个是传输绑定声明,它主要 是定义需要使用Https的SLL传输。另一个是支持Usertoken的声明,它用户使 用usertoken来保护传输层。
第五步,客户端调用的时候需要指定Rampart的相关配置文件以及密钥的存 储位置,并编写相关的客户端调用代码。
通过上面的步骤,就可以达到安全的WebService调用,从而保证系统的服务 不会被非法调用。并且这里的密钥可以定期的更换,这样就可以进一步加强服务 的安全性。
4.4关键词排名预测模块的设计与实现
4.4.1关键词排名预测模块类图说明
如图4.11是自动建模的系统类图,其中ModelAutoBuilder作为控制类,负责
整个建模模块的运行,它会启动一个线程,不断的检查是否对现有的计划已进行 建模工作并且去确认当前数据库中的模型是否为最新,如果当前计划没有模型或 者当前计划的模型已过时,则创建一个ModelBuilderThread的线程,他负责对推 广计划进行建模工作,调用RegionSelector选择出初始化的地域的数量以及具体 的地域,利用RegionGenerator递归的去计算并检验生成最佳的地域模型,直到最 终选择出最优的地域组合,最后将建立的地域模型保存或者更新入库。
4.4.2模块设计与实现
从现有的关键词地域报表取得关键词在不同地域的排名,用它们作为自变量; 从关键词报表中得到关键的平均排名,用它们作为因变量。现在,需要利用关键 词在各个地域的排名去拟合关键词在全地域的平均排名,理论上我们应该把35
整个的建模步骤为:Y=BX其中B为系数矩阵,X为各个地域的排名矩阵, Y为平均排名矩阵。
地域选择:关键地域的选择,我们希望寻找那些对平均排名影响较大的地域。 因些需要从报表中选择出展现量最高的10个地域。
关键词选择,从报表中选择出在上面的地域中的展现量的关键词以及他们的 排名。搜索引擎营销中的关键词竞价排名系统的设计与实现,得到排名组成的矩阵:X
关键词平均排名,从报表中得到关键词的平均排名形成矩阵:Y
然后利用最小二乘法计算回归方程[22]的Y=BX系数矩阵B
这里并不会使用所有的10个地域,需要再从这10个地域中去选择拟合效果 最好的几个地域去做为最终的回归模型。这里的算法逻辑为:
第一步:计算10个地域的拟合模型,并计算相关系数。
第二步:任选10个地域里的9个地域进行计算拟合模型,计算并保存计算出 的相关系数。
第三步:从第二步中拟合效果最好的9个地域里选择任意8个地域作进行计 算拟合模型,计算并保存计算出的相关系数。
第四步:重复类似2, 3,直到选择最后的3个地域结束递归。
第五步:从保存的相关系数中选择出拟合效果最好的地域组合,因为在搜索 排名的时候需要考虑速度问题,所以这里选择最好的地域组合效果,仅仅在3到 5个地域的数量范围内进行选择。
算法状态逻辑图如图4.12所示。对于模型需要保持时效性,所以需要不断地 去更新模型以保证它的有效。由于关键词创意的相关投放活动报表需要等到第二 天才可以拿到,那么系统的建模的就以前一个月的数据为准,每天对所有的计划 下的关键词进行相关的建模。这里设计一个ModelTask的任务类,它继承 Runnable,那么它可以作为推广计划对应的一个任务放到线程池中去运行。而主 线程所需要做的事为循环地去扫描整个模型表,根据模型的创建日期去判断它是 否过期,如果过期那需要创建对应的ModelTask去执行新的建模任务。最终将最 优的地域组合数量定义为3,那么最终的回归方程为:S = a*R1+b*R2+c*R3,其 中a, b, c称为回归系数,整个建模过程就是围绕计算a, b, c的值以及确定地 域的组合类型。
选择展现i最高的n个' 地域这里设in=1〇
f计算这n个地域的桕合&模型的相关系数,并 合模型的拟合程度
计算n-1-r地域的孤
n&3■景否为3
图4.12地域选择过程以及求得回归系数的过程
4.5关键词展现量预测模块的设计与实现
4.5.1利用ARIMA模型预测关键词创意展现量与点击量
第一步,需要判断数据在时间序列上是否平稳,首先取得某帐户下关键词创 意的日展现量统计图表,如图4.13所示。由图中可以看出,曲线非平稳,所以需 要对其进行一阶差分使序列平衡化,一阶差分后得到的数据统计图如图4.14所示, 由图可见数据基本平稳。
第二步,由于展现量在时间轴上呈现出一定的周期性,所以需要在建立模型 的时候需要利用周期再进行一次差分。ARIMA模型的建立最主要的是定阶,即
图4.14关键词创意展现量一阶差分统计图(单位:千次展现)
这里我们使用的是最小信息准则[23]作为模型的准确性评判由些来为ARIMA 模型定阶。下面简单介绍一下最小信息准则的计算方式:
AIC 最小信息准则(Akaike&s Information Criterion)
计算公式:&72=jZ(yt-yt)2式(4_i)
其中^是估计模型的均方误差。选择p和q,使A&(P,q)达到最小。
在计算p和q的时候通常会采用一定范围内的穷举法来确定它们的值,阶数 p和q的值不会超过10,因为当阶数很高的时候会增加回归方程的复杂度,反而 会降低拟合的效果,在这里统一将p,q的范围设置为[1,6],所以只需要遍历这个 6*6的结果集里找出最优的价数,就可以得到有最终的p,q阶数。计算在不同的 p和q的取值下的AIC。
下面是实现自动化建立模型的过程,这里和地域模型的建立是相似的,但有 一点不同的是,这里的建模算法不需要用JAVA代码去实现,可以利用MATLAB 里现有的模型算法,将Matlab的代码转化成JAVA的jar包,加入到项目里,利 用它提供的接口,在模块里创建一个ShowsModelTask和一个ClicksModelTask,
它们也是利用之前一段时间内的报表数据进行建模,去预测未来一天的关键词展 现以及点击量,为了保证模型有有效性,也需要对模型不断的进行更新,同一个 主线程对模型预测数据进行扫描,如果发现预测数据不是最新的,则创建一个新 的Task进行建模与预测。
4.5.2展现量预测模型的核心类图说明
时间序列上的展现量预估模型核心类图如图4.15所示,其中类CheckTask做 为主线程对所有的推广计划的预测值进行检查,如果推广计划的预测值不存在或 者过期,则会创建一个新的ModelBuilderTask去下载最新的数据并对该预测值进 行预估,ModelBuilderTask主要通过5个步骤去计算最终的预测值,分别是,下 载最新的报表数据,并进行数据的抽取和整理,对数据进行差分处理,计算q和 p的值,建立模型,利用模型进行预测,最后将预测的结果保存到数据库中。
4.6物料管理模块的设计与实现
4.6.1帐户管理
用户相关信息管理。用户的基本信息包括:用户帐户名,密码,邮箱,最低 报警余额限制等等,这里包括用户信息的添加,编辑,删除。用户管理的功能时 序图如图4.16所示,当保存用户信息的时候,信息就会传到UserAccountAction, 并调用它的saveUser/updateUser在Action层中会去调用UserService中的 saveUser/updateUser,并在UserService中调用UserDao层的方法,就实现了用户 的保存或者更新动作。
4.6.2物料管理
物料管理包括两个部分,一部分是物料信息的管理,另一部分是对竞价功能 的参数设置功能。物料管理包括推广计划管理,推广单元管理,关键词和创意管 理。三者之间可以作为一个树形结构被统一管理着,一个帐号下可以有多个推广 计划,一个推广计划下面有多个推广单元,一个推广单元下面有多个关键词创意。 他们之间的类关系如图4.17。因为他们的级联关系所以,当删除其中一个条目的 时候,首先去检查并删除它的子项目,删除物料的逻辑图如图4.18所示。
物料管理的核心主要是关键词和创意的管理,其父级结构很大的程度上是为 了批量管理其下属的关键的些共用属性。下面介绍一下关键词和创意的具体含意 与关系。
关键词是指用户在搜索引擎所购买的类似于广告创意的标识,一个推广计划 下的创意和关键词是相对应的,当用户购买了关键词之后,那些搜索引擎的使用 者只要搜索了这个关键词,那么就会在搜索结果里展现出关键词所对应的广告创 意。关于关键词与创意的匹配方式有两种,一种是精确匹配,它是指只有当搜索 引擎的搜索词与用户购买的关键完全相同的时候,广告创意才会被匹配展现出来。 另一种方式叫做广泛匹配,只要用户购买的关键词指定广泛匹配,那么在搜索引 擎里只要搜索包含有该关键词或者具有与关键词类似的含意则广告创意都会被展 现出来。
图4.18删除物料逻辑图
帐号类UserAccount里保存有帐号下的所有推广计划,在推广计划Campain
里保存有计划下的推广单元,在推广单元保存着相应的关键词Keyword和创意 Creative。这样子就构成了一个树形结构,在查询的时候可以通过树形结构查询要 相应的项目。同时,删除物料的时候也可以通过树的遍历来实现。
物料管理模块的另一部分功能就是关键词竞价的控制,包括设置关键词竞价 的参数,包括,最高出价,最高出价,以及期望排名的设置。当用户设置了每个 关键词的竞价参数之后,可以提交开启竞价的请求,也可以提交停止竞价的请求。
物料管理模块与竞价模块的交互图如图4.19所示。
4.6.3数据库设计与数据库连接的管理
帐户管理和物料管理主要有涉及到如下几张表:账户表(这里的帐户是指搜 索引擎的帐户),推广计划表,推广单元表,关键词表,创意表。它们构成的E_R 图,如图所示4.20所示。从帐户到推广计划,再到推广单元,再到关键词和创意 都以上一级的主键,由由关词和创意的数量会很大,这样在查询的时候会很慢, 这里可以通过建立索引加快数据的查询,除了主键之外,还会对那些频繁查询的 字段建立所引。
图4.20料管理数据库E_R图
数据库连接是一种非常有限的资源,对数据库连接是否能够高效地管理会对 整个系统的性能带来很大的影响。作为一个高并发的系统,同时带来的是对数据
库的高并发访问,数据库连接的创建与销毁是一个特别耗费时间的过程,所以这 里我们需要利用连接池来对数据库连接进行管理。
一个数据库链接池的主要职责包括:初始化数据库连接,分配,管理和释放 连接,它允许应用程序重复使用一个现有的数据库连接,这样就不需要每次会调 用都创建一个新的数据库连接,这种方式可以很大的提高系统的性能。
连接池的基本思想是,在系统初始化的时候,将数据库连接作为对象存储在 内存空间内,这里一般是使用一个容器对象进行保存,当调用者需要调用的时候, 直接从容器中取出一个空闲的连接给调用者使用,当使用完成后,连接并不会被 关闭,而是返还给容器提供给后面的调用都访问。因为数据库的连接数是有限的, 所以连接池在初始化的时候会设置一个初始化的连接数量和一个最大的连接数 量,当连接数量超过初始化连接数的时候会要把需求创建新的连接,但是,如果 连接数超过了最大的连接数,则调用者需要等待,直到有空闲的连接可用时。这 里需要注意的是,当用户对数据库操作完成之后,应该尽快的释放连接,以便于 提供给其它的调用者使用,另一方面在获取数据库连接的时候需要注意多线程下 的数据安全,所以在每一次取连接的时候需要使用线程的同步机制。它的原理图 如图4.21所示。
在Java的开源数据库连接池里,BoneCP是一个很高效的连接池,最重要的 一点是,BoneCP连接池可以自动检测那些未释放的数据库连接。它是100%的 Java开源框架,所以在系统里,我们选择BoneCP做为DAO层的连接池。
主要的配置项包括:
PartitionCount是连接池的分区个数,这里是为了减少锁的竞争和改善性能, 不同的线程可以同时从不同的分区中取得数据库连接,理论上这个参数越大,那 么竞争就越少,性能也就越好,但是当超过一定阀值的时候,连接池的维护工作 就会对性能造成一定程度上的负面影响。
maxConnectionsPerPartition设置每个分区含有connection的最大个数。这个 参数默认为 2。如果,partitionCount 设置为 3, maxConnectionPerParition 设置为 5,
则最多就会有15个connection。
minConnectionsPerPartition设置每个分区含有的connection最小个数。这个
参数默认为0。
ConnectionTimeOut设置获取connection超时的时间。这个参数默认为 long_MAX_VALUE;如果调用 getConnection 获取 connection 时,获取时间超过了
这个参数,就视为超时并抛出异常。
ReleaseHelperThreads设置connection助手个数。这个参数默认为3.用于回收 关闭后的connection,应用程序会通过助手线程异步的将这个connection设置到 一个临时队列进行处理。通过对数据库连接池的配置和使用,就不必每次都过多 的关注connection的创建与释放,就可以把更多的精力放在其它代码逻辑的编写
上。 4.6.4系统安全控制权限管理
系统的安全控制主要是指系统访问控制,即只有通过信息认证的授权用户才 可以访问和操作系统以及数据。
权限管理是指通过对用户的权限的配置使得用户只能访问并使用用户自身所 拥有的权限。这里的权限包括用户所能访问到的页面,页面上可以触发的事件, 以及在代码层面控制用户能否访问具体某个类的特定方法。
在关键词竞价排名系统里只有两类用户,一个是管理员,另一类是普通用户。 管理员的主要功能是管理用户信息,包括添加,删除,修改用户信息。普通的功 能主要是物料管理以及针对本帐户的自动竞价相关设置。通用的权限管理系统会 涉及到四张表:用户表,角色表,权限表,用户-角色表,角色-权限表。用户表 里存储用户名和密码相关信息。权限表里存放相关的页面URL,以及功能方法, 用户-角色表里是用户与角色的对应关系。
下面介绍权限管理功能的相关数据库设计:
由于竞价系统的涉及到的用户角色十分少,所以这里只涉及一张表,即用户 角色表用户表t_user:保存用户名密码,这里的用户与物料管理中的帐户不同, 这里主要是指登录整个竞价系统的用户。
下面介绍Spring Security3在整个系统安全控制方面的作用,对于权限控制所 实现的功能有:
1.对于用户的请求,检查是否登录,如果没有登录则跳转到登录页面
2.进入登录页面后,进行用户登录操作,如果登录成功,则进入相关的主页 面否则跳转到登录失败页面。
3.对于登录成功的用户,则将用户的相关信息以及权限等等加载到session里
4.对于资源的访问,判断用于是否拥有访问该权限的用户角色,如果用户拥 有该权限则进行正常的访问,否则抛出异常。对捕获的异常进行处理。
关于用户认证与授权的核心配置文件如下:
&jdbc-user-service data-source-ref=MdataSourceM users-by-username-query=Mselect username,password,enabled from user where username=?M
authorities-by-username-query="select u.username,r.name from user u join user_role ur on u.uid=ur.uid join role r on r.rid=ur.rid where u.username=?" /&
Users-by-username-query :是用来查询用户信息做为用户认证使用 Authorities-by-username-query:是用来取得用户及权限的相关信息,在程序
中用做授权的判断使用。
在程序里我们主要使用注解@PreAuthorize来作为方法级别的权限控制,其中 hasRole(&ROLE_USER&)用于判断当前用户是否拥有角色ROLE_USER去访问当 前的方法,如果没有则会抛出AccessDeniedException运行时异常,通过对这个异 常的处理,我们可以跳转到不同的出错界面。下面的例子就是系统中使用权限控 制方式:
@PreAuthorize(&hasRole(&ROLE&USER&),,)
Public void create(Contact contact);
4.7系统监控模块的设计与实现
关键词竞价排名系统的稳定性要求为7*24小时无间断地提供服务,搜索引擎营销中的关键词竞价排名系统的设计与实现,所以当系 统出现停止运行等异常情况必需要及时的发出报警信息。这里需要被监听的模块 包括关键词出价及排名探测模块,竞价模块,关键词排名预测模块,关键词展现 量预测模块以及物料管理模块。
监听模块的基本工作原理为:被监听的各个模块定时的向监听模块发送心跳, 具有循环业务的模块,在每一次循环的开始发送一次心跳。监听模块每次接收到 各个模块的心跳后,更新这个模块对应的时间戳,并且有一个单独的线程在后台 运行去检查时间戳所对应的时间与当前时间的差是否超过的系统所允许的最长时 隔时间,如果超过了则发出告警。监控模块与各个模块的交互如图4.22所示。
监控模块的告警检测机制如图4.23所示。关于告警机制,包括发送邮件以及 短信通知相关人员。下面介绍具体的实现方式。
发送告警邮件是利用JavaMail提供的发送邮件机制,主要需要以下几个步骤。 第一步,配置SMTP的相关参数。
第二步,配置访问SMTP server的用户名及密码。
第二步,构造邮件主体信息。
第四步,进行身份认证并发送邮件。
下面介绍JavaMail的核心类:
Session类定义了一个基本的邮件会话,使得后续的认证以及发送邮件等等工 作可以顺利进行。
Message类的一个实例对象对于一封具体的邮件,包括邮件标题,邮件标题, 邮件内容,发件人信息等等。同时Message类可以指定字符的编码格式。 Transport类发送邮件,最后一步是利用Transport类的静态方法
Transport.send(Message)去发送由P件。
4.8本章小节
本章全面介绍了整个关键词竞价排名系统设计与实现,先从整体介绍了整个 系统各个模块之间的关系与交互情况,再分别从竞价模块,出价和排名探测模块, 关键词排名预测模块,展现量预测模块,用户管理操作模块和系统监控模块进行 了详细的设计与实现。通过本章的说明,整个关键词竞价系统的功能结构得到的 完整的实现。
第五章系统测试
软件测试[24]是保证软件质量的最后一道关卡,所以需要在软件发布之前对软 件进行全面而有效的测试。本章主要对不同的模块使用不同的测试策略进行相应 的测试,以保证整个关键词竞价系统的稳定与完善。系统测试环境相关参数如下 所示:
操作系统:CentOS 5.8 Web 容器:Apache tomcat 6.35 Web 服务容器:Apache axis 2.1 单元测试框架:Junit 4.2 WebService 接口 测试:SoapUI 浏览器:chrome,firefox,IE6/7/8
服务器:DELL PowerEdge(内存 16G,硬盘容量 1T,CPU 型号:Xeon EG)
5.1物料管理模块测试
物料管理模块的测试主要集中在功能测试包括输入的合法性验证以及能够正 常的完成在需求分析阶段所设定的功能点。对每个功能点在特定的输入条件下, 对比期望输出和实际输出,测试用例如表5.1所示,通过对列表中的用例进行执 行后,修正出现异常的功能点,最终使用物料管理模块的功能满足用户需求。
表5.1物料管理模块测试用例
功能列表输入期望输出
添加帐户添加帐户信息合法的帐户信息被保存入 库,对于非法的输入信息提 示相关的报错信息
修改帐户修改帐户信息数据库中的帐户信息更新
删除帐户删除帐户数据库中相应帐户被删除
添加推广计划添加推广计划信息合法的推广计划信息被保 存入库,对于非法的输入信 息提示相关的报错信息
修改推广计划修改推广计划信息数据库中的推广计划更新
表5.1 (续)物料管理模块测试用例
功能列表输入期望输出
删除推广计划删除推广计划信息数据库中相应的推广计划 被删除
添加推广单元添加推广单元信息合法的推广单元信息被保 存入库,对于非法的输入信 息提示相关的报错信息
修改推广单元修改推广单元信息数据库中推广单元更新
删除推广单元删除推广单元信息数据库中相应的推广单元 被删除
添加关键词添加关键词信息合法的关键词信息被保存 入库,对于非法的输入信息 提示相关的报错信息
修改关键词修改关键词信息数据库中的关键词信息更 新
删除关键词删除关键词信息数据库中相应的关键词被 删除
添加创意添加创意信息合法的创意信息被保存,对 于非法的输入信息提示相 关的报错信息入库
修改创意修改创意信息数据库中的创意信息被修 改
删除创意删除创意信息数据库中的创意信息被删 除
开启关键词竞价开启关键词竞价关键词开始竞价
暂停关键词竞价暂停关键词竞价关键词的价格停止变动,并 且不参与竞价
通过对表5.1中的用用例执行,完成了对物料管理模块的测试,保证该模块 功能的正确性。
5.2关键词出价及排名探测模块测试
关键词出价和排名探测模块是会被高频率的调用,所以这里必须要保证模块
在高并发调用的时候能够正常的运行。由于出价和排名探测模块是以WebService 的形式对外发布的,所以这里打算采用开源的WebService测试工具SoapUI进行 测试,进行关键词出价和关键词排名探测模块的WebService进行测试。对于关键 词出价及排名探测模块的功能测试用例如表5.2表示:
表5.2关键词出价及排名探测模块测试用例
功能列表输入期望输出
设置关键词出价帐户,推广计划,推广单元, 关键词,价格关键价格被修改
探测关键词排名关键词,地域,创意信息返回正确排名
关键词出价的性能测试模拟25个线程并发进行对关 键词的出价保证每次出价在1秒之内返 回结果
探测关键词排名功的性能测 试模拟25个线程并发进行对 关键词的出价保证每次对关键词排名探测 在1秒之内返回结果
因为在自动竞价模块里,线程池里线程的数量为25,所以这里我们也将负载 的并发数设置为25,并且在真实系统里的调用是没有延迟的,所以我们设置 TestDelay为1毫秒,Random为0,测试结果如图5.1所示。
图5.1关键词出价功能的性能测试结果报表
在输出结果中有几个参数需要说明:max:表示最大响应时间。avg:表示平 均响应时间。err:出错数。rat:出错概率。
由图中的测试结果可以看到,这个接口的测试是成功的,在负载下,并没有 发生异常,最终得到的性能测试图如图5.2所示,我们需要保证的是Average没 有不断增长,ErrorCount在有限的范围内。
5.3关键词排名预测模块测试
我们从一个计划里选择出展现民最高的5个地域的关键词排名以及全地域的 平均排名如表5.3所示(注,这里的关键词名称进行省略,仅以序号表示出来)。 得到的排名预测结果如表5.4所示。
表5.3建模数据
关键词广东排名江苏排名浙江排名上海排名北京排名平均排名
16.455.566.307.133.946.70
21.751.241.381.201.311.51
31.001.002.481.001.911.05
45.133.152.363.854.503.46
55.004.533.163.273.543.14
66.345.355.255.455.704.88
71.631.651.604.003.332.33
81.101.331.541.001.501.21
91.251.001.832.401.171.45
101.501.313.001.002.001.53
113.335.755.647.003.006.72
表5.3 (续)建模数据
关键词广东排名江苏排名浙江排名上海排名北京排名平均排名
123.503.502.002.502.672.71
132.001.001.003.503.002.31
143.773.253.503.353.503.06
154.803.764.053.683.833.85
表5.4测试数据
词广东排名江苏排名浙江排名上海排名北京排名平均排
13.904.004.704.033.453.513.9084
25.144.514.434.634.684.314.3649
34.674.184.283.935.383.873.7069
45.235.502.463.503.004.124.3617
55.474.614.544.695.334.444.3718
利用多元线性回归模型,得到最佳的拟合地域为:江苏,上海和北京 得到的回归方程为:y = 0.478*XI+0.597*X2-0.118*X3
计算得到的模型,需要存储到数据库里,当竞价程序在计算排名的时候则从数据 库中取得方程模型。
预测数据与真实数据的对比图,如图5.3所示。
在多元回归分析中,测试数据与按回归方程得到的预测值之差,搜索引擎营销中的关键词竞价排名系统的设计与实现,用5表示。 残差5服从正态分布N(0,〇2)。其中5和G之比,称为标准化残差,用5*表示。 其中,5*服从标准正态分布N(0,1)。买验点的标准化残差落在(-2,2)区间以外 的概率^0.05。如果某一实验点的标准化残差落在可信区间以外,则将其判定为异 常实验点,将这差数据清除并将剩余的数据进行回归线拟合。所谓残差是指真实 数据与利用回归方程计算出值的差,其中残差的数量和数据对的数量是相同的。 残差分析就是通过残差所提供的信息,做出残差图表,根据图表中的展示,找出 干扰项,并将其排除再进行拟合。
图5.4带有奇异点的残差展示图
残差分析如图5.4所示,通过残差分析,可以找出数据中的奇异点,即就是 差值范围没有通过0界线的点。在建模的时候需要把数据中的奇异点去除,并重 新进行建模,去除奇异点的残差图如图5.5所示,这里的残差图是用matlab[26]进 行描绘的。
图5.5无奇异点的残差展示图
通过利用真实数据与实验数据的对比,可以看出,关键词的排名预测模型基 本实现了预期的目标,能够通过对部分地域的采样去计算出关键词在全地域的平 均排名。
5.4关键词展现量预测模块测试
自从Engle(1982)提出ARCH模型分析时间序列的异方差性以后,波勒斯列 夫T.Bollerslev(1986)又提出了 GARCH模型,GARCH模型是一个专门针对金融
数据所量体订做的回归模型,除去和普通回归模型相同的之处,GARCH对误差 的方差进行了进一步的建模,特别适用于波动性的分析和预测,根据实验结果我 们选择了 ARIMA模型,这里不对GARCH模型进行展开介绍,仅做为一个对比 模型。表5.5为建模过程中的给参数定阶的中间数据集。
表5.5 AIC计算结果列表
115.361 499
125.287 811
135.291 425
145.374 866
155.260 996
165.199 027
215.367 910
225.368 409
235.326 117
245.187 277
255.155 939
265.141 987
315.387 120
325.395 972
335.311 135
345.161 110
355.149 200
365.138 954
415.309 975
425.281 664
435.149 057
表5.5 (续)AIC计算结果列表
445.163 104
455.175 876
465.072 011
515.422 913
525.307 972
535.318 167
545.337 818
555.216 851
565.098 672
615.220 465
625.222 969
635.180 650
645.198 534
655.079 792
665.085 756
从计算出的AIC值中看到,当p=4,q=6时AIC的值最小,所以定阶的结果为
p=4, q=6。
第三步,利用参数已确定的模型进行数据的预测,结果如表5.6所示。
表5.6 ARIMA模型与GARCH模型的预测结果对比
真实数据GARCH模型的预测数据ARIMA模型的预测数据
20.993 022.766 024.772 9
18.537 020.462 122.871 1
15.840 015.273 821.734 8
15.813 013.149 221.818 3
20.964 018.312 322.081 0
23.284 020.585 323.336 9
38.483 023.047 625.692 4
34.046 038.623 729.822 0
29.160 025.191 025.477 2
21.957 032.717 724.666 7
表5.6 ARIMA模型与GARCH模型的预测结果对比
真实数据GARCH模型的预测数据ARIMA模型的预测数据
20.362 015.935 623.367 9
25.328 021.082 324.256 7
25.206 024.470 626.451 0
28.280 035.677 726.838 6
29.130 027.978 329.327 5
28.143 019.628 826.249 1
23.255 023.138 323.242 9
21.994 020.506 822.845 8
26.666 028.121 227.548 9
24.920 025.095 525.249 2
建立整个预测模型的过程为:
1.关键词的日展现量次数总体以7为周期,所以第一步做了一次差分,
y(i-s)=x(i)-x(i-s); (s=7)
2.观测步骤一结果是否平稳,再对y进行差分计算:w=diff(y)。
3.然后利用AIC去定阶,选择出p=4,q=6为最优模型。
4.利用predict去预测数据,这里设K=7(7为周期),即利用t-7去预测t+1得 到。
5.将两次的差分还原得到最终的预测数据,这里直接得到的预测是对w的预测。 最终的结果如图5.6所示。
图5.6是真实数据与模型预测的结果对比图,分别是真实数据,ARIMA模 型对周期序列的预测结果,GARCH模型对周期序列的预测结果,从图中可以看 出ARIMA的预测曲线相比之下与真实数据更加接近一些,因此可以做为最终的 预测模型。
5.5竞价模块的测试
竞价模块的测试内容包括两部分,一个是竞价的逻辑正确性,当用户设置了 价格范围,以及期望排名,关键词的最终排名会达到期望的目标,并且当出价达 到了最高价格后,如果排名未达到期望排名,终止竞价;另一方面,需要对竞价 模块进行性能测试,主要是通过测试对不同数量级的关键词进行竞价排名的时候

我要回帖

更多关于 淘宝关键词展现量查询 的文章

 

随机推荐