基于后台数据库的个性化Web页面实现 下载本文

用。数据操作结束后,使用型如RecordSet.close的语句关闭数据对象。

4.3 记录用户点击序列

我们采用记录用户上站后的点击序列来跟踪用户的访问情况。怎样才能让服务器得知用户点击了哪一个链接呢,普通的链接只能直接引导用户浏览器至另一Web页面,不能对用户点击的链接进行记录,本文采用的方法是给每一个链接起一个不重复的名称(TopicName),所有链接都指向一个名为Record.asp的ASP程序,并传递参数TopicName, 由Record.asp对TopicName进行记录。

用于存放用户所点击Topic的Behavior表已在用户注册时生成,如表3.2所示。

Record.asp中记录点击的算法描述如下:

1)TopicName=Request.QueryString(\2)UserID=session(\ 3)BehaviorID=session(\ 4)ClickID=session(\5)BehaviorID=trim(BehaviorID) 6)ClickID=trim(ClickID)

7)session(\8)定义记录TopicName到数据库的sql语句字符串 9)application(\ 10)URL=\11)Response.Redirect(URL)

其含义为:首先,从链接传递的参数中取回TopicName,从Session

21

中取回UserID 、BehaviorID和ClickID。其中UserID、BehaviorID在登陆时得到并存入Session,ClickID在用户登陆时自动设置为1,由Global.asa中的以下语句实现:

Sub Session_OnStart session(\

End Sub

将BehaviorID和ClickID转换为字符串(利用trim函数);将Session中的session(\值加1,供下个记录使用;定义插入点击记录的SQL语句串;然后利用链接对象application(\,执行SQL语句,将用户点击信息写入数据库;记录完成,指向生成个性化页面的GenPage.asp程序,并传递参数TopicName。

其中一个需要解决的问题是,对于不同用户,要插入的表不同,被插入的内容也不同。这样,实现插入操作的SQL语句必须是可变的,显然需要在其中加入变量。这里采用以下语句:

sql=\

sql=sql+UserID +\ sql=sql+\

sql=sql+\ sql=sql+\ sql=sql+\

这样,就可以根据不同的用户产生不同的SQL插入语句。

对用户点击的记录完成后,紧接着便生成用户的个性化页面。

22

4.4 页面的生成

个性化页面的动态生成是整个系统中最复杂的部分。其原理是,查找事先生成的用户关联规则表,若有关于当前TopicName的可用规则,则分离处理这些规则,得到需要显示的相关链接,利用它们组织生成一新的页面,该页面上的链接同样要具有记录用户点击并触发生成新的个性化页面的功能。这是一个类似递归的过程。如果关联规则表中没有当前可用信息,则返回事先存储于服务器上的缺省页面。

以下将对关联规则表和具体页面生成过程进行介绍。

4.4.1 关联规则表

关联规则表是对用户的Behavior表进行分析后,得出的有关用户点击的链接之间关联规则的列表。该表的生成与用户的访问是异步的,即无论用户访问频率怎样,由系统管理人员定期地利用关联规则生成程序对所有用户的关联规则表进行更新。

用户关联规则表命名方法为UserID+“_Rules”,例如:1_Rules,格式如下表所示: Rule {People}==>{Faculty} {Topics}==>{Publications} {People,Topics}==>{Faculty} {Papers,Topics}==>{News,Publications} ?? Support 0.34 0.55 0.31 0.3 ?? Confidence 0.77 0.55 0.4 0.6 ??

表3.4 1_Rules表

这里,规则(Rule)是形如“X ==>Y”的表达式,其中X和Y都是TopicName的集合且X?Y=?,例如:{People}==>{Faculty}、{Papers,Topics}==>{News,Publications}。关联规则X==>Y由置信度

23

c(confidence)和支持度s(support)来约束。此处置信度c定义为:对所有动作集(用户一次上站的点击集),含有X中的项目的动作集中有c%个也含有Y;支持度s定义为:包含X?Y的动作集数占所有动作集总数的s%。置信度表示关联规则的强度,支持度表示该规则出现的频度。具有高置信度和高支持度的关联规则称为强关联规则,否则称为弱关联规则。我们用支持度阈值minSup和置信度阈值minConf来控制关联规则的有效性,即confidence大于minConf,support大于minSup的规则被认为有效,否则为无效。

本文所用的关联规则表中的规则都是有效的,换句话说,那些不满足支持度阈值和置信度阈值限制的规则已经在生成该表时被筛选掉了。所以我们这里不考虑置信度和支持度的大小问题,要用到的信息只是关联规则表达式。

我们已经看到,关联规则表达式长短不一,所含TopicName数目也不定,格式很不规整,如何从关联规则表达式中分离出各TopicName供程序使用便成了一个关键问题。我们将在网页的生成部分详细介绍。

4.4.2 页面生成

当用户点击的主题被Record.asp记录下来以后,随即进入页面生成程序GenPage.asp,同时传递被点击主题TopicName。页面生成程序从用户Session中取回UserID,确定用户身份。然后根据该用户关联规则表,并结合主题层次树表决定需要显示的主题(链接),接下来组织生成页面。其中要处理的几个主要问题是:

1.如何正确分解关联规则表达式。 2.如何确定哪些主题需要被显示。 3.如何组织页面。

关联规则表达式的形状很不规整,但是我们发现其中有几个标志性

24