查找访问相关uri的用户的方法

文档序号:6560339阅读:192来源:国知局

专利名称::查找访问相关uri的用户的方法
技术领域
:本发明涉及一种计算机程序,特别是涉及一种基于因特网的计算机程序。
背景技术
:URI(统一资源标识符)是因特网的一个协议要素,可以通过它来定位任何远程或本地的可用资源(resource),这些资源通常包括HTML文档、图像、视频片断、程序等。URI的语法参见Berners-Lee,T.,Fielding,R.,andL.Masinter,″UniformResourceIdentifier(URI)GenericSyntax″,STD66,RFC3986,January2005.因特网用户可以通过浏览器等软件访问URI所标识的远程资源。用户之间可以通过聊天室在一个网址上进行交流。用户也可以通过聊天室认识陌生人,结交新朋友。对于希望认识陌生人的用户,目前的聊天室软件只能使其查找到访问这一聊天室的用户。本发明突破了这一限制,使用户在访问一个URI时,可以查找到访问相关URI的其他用户。近半数的即时通讯用户希望通过即时通讯软件认识陌生人,参见艾瑞市场咨询,《中国即时通讯用户使用即时通讯软件的原因》,http//www.iresearch.com.cn/html/instant_messenger/detail_views_id_28019.html,2006年2月。即时通讯软件通常提供按照指定条件查找在线用户的功能,这里的条件一般指用户的个人信息,比如性别、年龄等。即时通讯软件没有按照用户当前访问的URI查找用户的功能。本发明可以为即时通讯软件添加此功能。
发明内容本发明解决了查找访问相关URI的用户的问题,解决了确定不同URI之间相关性的问题。本发明包括一个系统,这个系统包括服务器以及客户终端机上的客户端程序。客户端程序的一部分或全部功能可以集成在浏览器中。用户在客户终端机上用浏览器访问因特网上的站点时,客户端程序将用户访问的URI等信息通过因特网发送给服务器,或者客户端程序也可以将URI进行转化,并把其转化形式发送给服务器。服务器记录用户访问的URI或其转化形式以及访问该URI的时刻。服务器中包含大量用户的访问记录。如果服务器记录用户访问的URI,则对于一个URI,可以查到访问该URI的用户。如果服务器记录用户访问的URI的转化形式,不同URI可能有相同的转化形式,那么对于一个转化形式,可以查到访问的URI具有同一转化形式的用户。服务器可以确定URI之间的相关性。同一URI的相关性最强。对于一个URI,访问相关URI的用户包括访问同一URI的用户。对于一个URI,服务器可以查找到当前访问同一URI或访问与该URI相关性强的其他URI的用户。服务器可以记录每个用户最新访问的URI或其转化形式。对于一个用户,服务器可以只保留其最新访问的URI或其转化形式及访问时刻。对于一个URI或其转化形式,服务器可以查找到最近一段时间内访问相关URI的用户。服务器可以存储用户的信息。用户可以在服务器中登记自己的信息。查找到访问相关URI的用户后,服务器可以查找到这些用户的信息,并将这些信息发送给客户端程序。URI之间的关系包括URI所标识的资源之间的链接关系。从一个URI标识的资源(比如网页)中,可以通过一层或多层链接,链接到另一个资源。两个资源之间链接的层次越多,关系越弱。服务器可以根据URI标识的资源之间的链接关系确定URI之间的相关性。一个URI通过一重或多重链接可以链接到其他URI,可以用广度优先搜索的方法通过链接关系查找与该URI相关的URI。URI之间的关系也包括从URI字符串确定的关系,通常,属于同一站点的URI比不同站点的URI相关性强,属于同一站点同一目录的URI比同一站点不同目录的URI相关性强。服务器可以将URI进行转化,通过对转化后的字符串的排序确定对应URI的相关性。对所有转化成的字符串排序后,可以根据排序后在序列中的接近程度确定相关性。相邻的转化字符串对应的URI的相关性最强。转化字符串的操作也可以由客户端程序完成,客户端程序将URI转化成的字符串发送给服务器,服务器记录用户访问的URI转化成的字符串,这样服务器端程序就不必再对URI进行转化了。有些URI中包含域名部分。将URI进行转化时,可以将URI中包含的域名的各部分(label)的顺序逆转。字符串排序时通常需要从左向右逐个字符进行比较。域名各部分的顺序逆转后,在字符串比较时,会先比较级别高的部分,比如先比较顶级域名。有些URI中包含查询(query)部分,形如“key1=value1&key2=value2&key3=value3”。将URI进行转化时,对查询部分可以这样处理将关键字(key)进行排序,得到关键字的第一种顺序;将关键字和值(value)组合在一起,按值进行排序,同时得到值的第一种顺序和关键字的第二种顺序;将关键字按第一种顺序,值按第一种顺序,关键字再按第二种顺序进行排列即可。以查询“a=2&c=1&b=3”为例,关键字的第一种顺序是“a,b,c”,值的第一种顺序是“1,2,3”,关键字的第二种顺序是“c,a,b”,该查询可以转化成“a&b&c&1&2&3&c&a&b”。对查询部分进行这样的转化之后,比较转化后的字符串时,相当于先比较查询中是否包含同样的关键字,再比较查询中是否有相同的值,最后确定是否同样的值对应同样的关键字。这样转化后,对应的关键字和值相同,而仅仅排列顺序不同的查询,会转化成相同的字符串。例如“b=3&a=2&c=1”也将转化成“a&b&c&1&2&3&c&a&b”。如果查询中的关键字或值不同,转化后也可以反映出来。由于转化后包含了关键字的第二种排序,保留了关键字和值的对应关系,不会将关键字和值相同,但对应关系不同的查询混同,例如不会将前面的两个查询例子和“a=1&b=2&c=3”这样的查询转化成一样的字符串。利用本发明,可以使用户在访问远程资源(例如网页)的同时,与访问同一URI或相关URI的其他用户进行交流。用户可以进行有关这些资源的实时讨论。访问同一URI或相关URI的用户之间比较可能有共同的兴趣,也便于用户结交志同道合的新朋友。本发明可以给即时通讯软件添加按用户当前访问的URI查找在线用户的功能。图1是利用字符串排序确定URI相关性的客户端程序的主要流程图;图2是利用字符串排序确定URI相关性的服务器端程序的主要流程图;图3是利用链接关系确定URI相关性的客户端程序的主要流程图;图4是利用链接关系确定URI相关性的服务器端程序的主要流程图。具体实施例方式在本发明中,客户端程序需要实时获得用户访问的URI,并将其传送给服务器;服务器需要记录用户访问的URI,并确定不同URI之间的相关性,再查找到访问相关性较强的URI的用户列表,并将其发送给客户端程序。如果在客户端程序中加入即时通讯的功能,则用户可以与访问相关URI的其他用户之间进行即时通讯。客户端程序需要实时获得用户访问的URI,将客户端程序集成在浏览器中,是一种方便的选择。火狐(Firefox)是一种常用的浏览器。为火狐增加新功能,可以使用“扩展”(extension)。扩展小到可以给火狐添加工具栏按钮,大到可以添加完整的新功能(参见MozillaCorporation,“Extensions”,https//addons.mozilla.org/firefox/extensions/)。本发明中的客户端程序可以用火狐扩展来实现。服务器实现为网站的形式,客户端程序可以通过http或https协议与服务器端程序进行交互。服务器端程序可以用PHP或JSP编写。服务器中可以使用MySQL或Oracle数据库来存储用户访问的URI等信息。两个URI之间的相关性可以是从URI字符串确定的关系,也可以是URI所标识的资源之间的链接关系。如果从URI字符串确定两个URI之间的相关性,那么客户端程序与服务器端程序的主要流程可以分别用图1和图2表示。如果由URI所标识的资源之间的链接关系来确定两个URI之间的相关性,那么客户端程序与服务器端程序的主要流程可以分别用图3和图4表示。下面以这四个流程图为基础,对两种实施方式下客户端程序和服务器端程序的各步骤进行描述。利用字符串排序确定URI相关性的客户端程序(图1)客户端程序首先需要用户登录,用户需要输入用户名和密码,客户端程序将其发送到服务器进行验证。用户成功登录后,在浏览器中访问新的URI时,客户端程序获取到该URI后,判断该URI是否属于一定类型。如果此URI中的协议部分是”http”,并且URI标识的不是本机或内网的资源,并且URI中不包含用户名或密码部分,则客户端程序将此URI发送到服务器。服务器查找到最近访问与此URI相关的URI的用户信息,反馈给客户端程序。客户端程序显示这些用户的信息,比如用户名、用户照片、电子邮件地址等。当用户在浏览器中手工输入新的URI时,或点击链接访问新的URI时,将重复这些操作。利用字符串排序确定URI相关性的服务器端程序(图2)设服务器端程序用PHP编写,并使用MySQL数据库来存储数据。在数据库中建立“用户访问记录表”来存储用户访问URI的记录,表的内容包含用户编号、当前时间和用户当前访问的URI的转化形式。设“用户访问记录表”在数据库中的名称为access_table,表中存储URI转化的字符串的字段的名称为uri_translation。URI的转化包括将其中包含的域名的各部分(field)的顺序逆转。比如“http//sub.domain.com/path/to/file”这一URI中包含了域名“sub.domain.com”,将其各部分的顺序逆转后变成“com.domain.sub”,则原URI转化为“http//com.domain.sub/path/to/file”。如果URI中包含查询(query)部分,则对查询部分也要按照上文中描述的方法进行转化。服务器端程序用一个名为“相关用户列表”的列表来存储查找到的访问相关URI的用户的编号。用户可以在服务器中登记自己的个人信息与联系方式,如照片、电子邮件地址等。根据“相关用户列表”中的用户编号,可以查找到用户的信息。客户端程序将用户当前访问的URI发送到服务器,设此用户的编号为A,服务器端程序获取当前时间,并将用户编号A、当前时间和该URI的转化形式存入“用户访问记录表”。设用户A访问的URI的转化形式在PHP中用变量$original_translation表示。如果表中已有用户A的访问记录,则原记录被新记录取代。也就是说,该表只保存每个用户最新的访问记录。服务器端程序将“相关用户列表”清空。服务器端程序从“用户访问记录表”中查找最近一段时间内访问的URI的转化形式为$original_translation的用户编号,并将这些用户的编号加入“相关用户列表”。这时我们认为用户A当前访问的URI的转化字符串已经被处理过了。目前已被处理过的URI的转化字符串的数量为1个。如果“相关用户列表”中的用户已达到一定数量,或者已处理过的URI转化字符串达到一定数量,则不再继续查找,将“相关用户列表”中用户的信息查找出来,反馈给客户端程序即可;否则应继续进行查找。我们以URI转化的字符串之间的接近程度来确定URI之间的相关性。URI转化的字符串越相似,其对应的URI之间的相关性越高。可以用形如“selecturi_translationfromaccess_tablewhereuri_translation<’$original_translation’orderbyuri_translationdesclimit1”和“selecturi_translationfromaccess_tablewhereuri_translation>’$original_translation’orderbyuri_translationlimit1”的MySQL查询语句来取得与$original_translation最接近的两个转化字符串。设这两个转化字符串分别存储在变量$left_translation和$right_translation中。服务器端程序在“用户访问记录表”中查找最近一段时间内访问的URI的转化字符串为$left_translation或$right_translation的用户的编号,并将这些用户编号加入“相关用户列表”。这时我们认为$left_translation和$right_translation是已被处理过的URI转化字符串。已被处理过的URI转化字符串的数量增加了两个。如果“相关用户列表”中的用户已达到一定数量,或者已处理过的URI转化字符串达到一定数量,则不再继续查找,将“相关用户列表”中用户的信息查找出来,反馈给客户端程序即可;否则应继续进行查找。用形如“selecturi_translationfromaccess_tablewhereuri_translation<’$left_translation’orderbyuri_translationdesclimit1”和“selecturi_translationfromaccess_tablewhereuri_translation>’$right_translation’orderbyuri_translationlimit1”的MySQL查询语句来从“用户访问记录表”中查找到未被处理过的URI转化字符串中与$original_translation最相似的两个URI转化字符串。将这两个URI转化字符串分别存储在变量$left_translation和$right_translation中。重复上面三段中描述的操作,直到“相关用户列表”中的用户达到一定数量,或者已处理过的URI转化字符串达到一定数量,则不再继续查找,将“相关用户列表”中用户的信息查找出来,反馈给客户端程序。利用链接关系确定URI相关性的客户端程序(图3)客户端程序首先需要用户登录,用户需要输入用户名和密码,客户端程序将其发送到服务器进行验证。用户成功登录后,在浏览器中访问新的URI时,客户端程序获取到该URI后,判断该URI是否属于一定类型。如果此URI中的协议部分是”http”,并且URI标识的不是本机或内网的资源,并且URI中不包含用户名或密码部分,则客户端程序从URI标识的资源中查找到其他URI的链接,并将这些链接和该URI一起发送到服务器。服务器查找到最近访问与此URI相关的URI的用户信息,反馈给客户端程序。客户端程序显示这些用户的信息,比如用户名、用户照片、电子邮件地址等。当用户在浏览器中手工输入新的URI时,或点击链接访问新的URI时,将重复这些操作。利用链接关系确定URI相关性的服务器端程序(图4)设服务器端程序用PHP编写,并使用MySQL数据库来存储数据。在数据库中建立“用户访问记录表”来存储用户访问URI的记录,表的内容包含用户编号、当前时间和用户当前访问的URI。在数据库中建立“链接表”来存储URI标识的资源中包含的链接关系,表的内容包含一个资源本身的URI和这个资源中的链接所对应的URI。设“链接表”在数据库中的名称为link_table,表中存储资源本身对应的URI的字段的名称为base_uri,存储资源中的链接所对应的URI的字段的名称为link_uri。服务器端程序用一个名为“相关用户列表”的列表来存储查找到的访问相关URI的用户的编号。用户可以在服务器中登记自己的个人信息与联系方式,如照片、电子邮件地址等。根据“相关用户列表”中的用户编号,可以查找到用户的信息。服务器端程序用名为“待处理URI队列”的队列来存储等待处理其链接的URI,用名为“已处理URI列表”的列表来存储已处理其链接的URI。客户端程序将用户当前访问的URI和对应的资源中包含的链接发送到服务器,设此用户的编号为A,服务器端程序获取当前时间,并将用户编号A、当前时间和该URI存入“用户访问记录表”。如果表中已有用户A的访问记录,则原记录被新记录取代。也就是说,该表只保存每个用户最新的访问记录。设用户A当前访问的URI在PHP中用变量$original_uri表示。用形如“deletefromlink_tablewherebase_uri=’$original_uri’”的MySQL语句将“链接表”中该资源对应的链接记录删除。如果客户端程序发来的与URI对应的资源中包含的链接是相对引用(relativereference),那么先将其转换成绝对URI(absoluteURI)。对于资源中包含的每个链接所对应的绝对URI,将其与资源本身的URI对应存入“链接表”的link_uri和base_uri字段中,除非链接所对应的绝对URI就是资源本身的URI。下面服务器端程序以广度优先搜索的方法查找相关URI。服务器端程序将“相关用户列表”、“待处理URI队列”和“已处理URI列表”清空。将用户A当前访问的URI加入“待处理URI队列”。从“用户访问记录表”中查找最近一段时间内访问同一URI的用户编号,并将这些用户的编号加入“相关用户列表”。如果“相关用户列表”中的用户已达到一定数量,或者“已处理URI列表”中的URI达到一定数量,或者“待处理URI队列”中没有URI,则不再继续查找,将“相关用户列表”中用户的信息查找出来,反馈给客户端程序即可;否则应继续进行查找。将位于“待处理URI队列”头部的URI删除,并将该URI加入“已处理URI列表”。设该URI为$current_uri。用形如“selectlink_urifromlink_tablewherebase_uri=’$current_uri’”的MySQL查询语句从“链接表”中查找$current_uri对应的全部链接URI。对$current_uri对应的全部链接URI逐个进行处理。设$current_uri的一个链接URI为$found_uri,如果$found_uri不在“已处理用户列表”中,那么在“用户访问记录表”中查找最近一段时间内访问$found_uri的用户的编号,然后将这些用户编号加入“相关用户列表”。如果$found_uri既不在“已处理用户列表”中也不在“待处理URI队列”中,那么将$found_uri加入“待处理URI队列”的尾部。如此处理完$current_uri对应的全部链接URI。重复上面三段中描述的操作,直到“相关用户列表”中的用户达到一定数量,或者“已处理URI列表”中的URI达到一定数量,或者“待处理URI队列”中没有URI,则不再继续查找,将“相关用户列表”中用户的信息查找出来,反馈给客户端程序。权利要求1.查找访问URI(统一资源标识符)的用户的方法,其特征在于包括下列步骤将用户访问的URI或其对应的转化形式发送到服务器;服务器记录不同用户对URI的访问情况,其中可以用URI对应的转化形式代表URI;服务器查找访问同一URI的用户,或查找访问的URI对应于同一转化形式的用户。2.根据权利要求1所述的查找访问相关URI的用户的方法,其特征在于包括下列步骤将用户访问的URI或其对应的转化形式发送到服务器;服务器记录不同用户对URI的访问情况,其中可以用URI对应的转化形式代表URI;对于一个URI或其转化形式,服务器查找与之相关的URI或URI的转化形式,并查找访问这些相关URI的用户或查找访问的URI对应于这些相关转化形式的用户。3.根据权利要求2所述的查找访问相关URI的用户的方法,其特征在于包括下列步骤由客户端程序将用户访问的URI转化成对应的字符串后发送到服务器,或者客户端程序将用户访问的URI发送到服务器,由服务器将URI转化成对应的字符串;服务器用URI对应的转化字符串代表URI,记录不同用户对URI的的访问情况;对于一个URI的转化字符串,服务器查找与之相似的转化字符串,并查找访问与这些转化字符串相对应的URI的用户。4.根据权利要求3所述的查找访问相关URI的用户的方法,其特征在于包括下列步骤由客户端程序将用户访问的URI转化成对应的字符串后发送到服务器,或者客户端程序将用户访问的URI发送到服务器,由服务器将URI转化成对应的字符串;服务器用URI对应的转化字符串代表URI,记录不同用户对URI的的访问情况;对于一个URI的转化字符串,服务器根据对URI转化字符串的排序查找与之相似的转化字符串,并查找访问与这些转化字符串相对应的URI的用户。5.根据权利要求4所述的查找访问相关URI的用户的方法,其特征在于对URI的转化包括下列步骤将URI中包含的域名的各部分(label)的顺序逆转。6.根据权利要求4所述的查找访问相关URI的用户的方法,其特征在于对URI的转化包括下列步骤将URI的查询(query)部分中的关键字(key)进行排序,得到关键字的第一种顺序;将查询部分中的关键字和值(value)组合在一起,按值进行排序,同时得到值的第一种顺序和关键字的第二种顺序;将关键字按第一种顺序,值按第一种顺序,关键字再按第二种顺序进行排列。7.根据权利要求2所述的查找访问相关URI的用户的方法,其特征在于包括下列步骤将用户访问的URI或其对应的转化形式发送到服务器;服务器记录不同用户对URI的访问情况,其中可以用URI对应的转化形式代表URI;对于一个URI或其转化形式,服务器根据URI标识的资源(resource)中包含的到其他URI的链接,查找与之相关的URI或URI的转化形式,并查找访问这些相关URI的用户或查找访问的URI对应于这些相关转化形式的用户。8.根据权利要求7所述的查找访问相关URI的用户的方法,其特征在于包括下列步骤将用户访问的URI或其对应的转化形式发送到服务器;服务器记录不同用户对URI的访问情况,其中可以用URI对应的转化形式代表URI;对于一个URI或其转化形式,服务器根据URI标识的资源中包含的到其他URI的链接,用广度优先搜索的方法查找与之相关的URI或URI的转化形式,并查找访问这些相关URI的用户或查找访问的URI对应于这些相关转化形式的用户。9.根据权利要求2所述的查找访问相关URI的用户的方法,其特征在于包括下列步骤将用户当前访问的URI或其转化形式发送到服务器;服务器记录不同用户最新对URI的访问情况,其中可以用URI对应的转化形式代表URI;对于一个URI或其转化形式,服务器查找与之相关的URI或其转化形式,并查找最近一段时间内访问这些相关URI的用户或查找最近一段时间内访问的URI对应于这些相关转化形式的用户。10.根据权利要求9所述的查找访问相关URI的用户的方法,其特征在于包括下列步骤服务器存储用户的个人信息;客户端程序将用户当前访问的URI或其转化形式发送到服务器;服务器记录不同用户最新对URI的访问情况,其中可以用URI对应的转化形式代表URI;对于一个URI或其转化形式,服务器查找与之相关的URI或其转化形式,并查找最近一段时间内访问这些相关URI的用户或查找最近一段时间内访问的URI对应于这些相关转化形式的用户,并查出这些用户的个人信息,并将这些用户的个人信息发送给访问该URI的用户。全文摘要本发明“查找访问相关URI的用户的方法”涉及一种基于因特网的计算机程序。本发明解决了查找访问相关URI的用户的问题,也解决了确定不同URI之间相关性的问题。URI之间的关系包括从URI字符串确定的关系,也包括URI所标识的资源之间的链接关系。本发明包括一个系统,这个系统包括服务器以及客户终端机上的客户端程序。客户端程序将用户访问的URI等信息通过因特网发送给服务器。服务器可以确定URI之间的相关性。对于一个URI,服务器可以查找到当前访问同一URI或访问与该URI相关性强的其他URI的用户。本发明使用户可以在访问远程资源(例如网页)的同时,与访问同一URI或相关URI的其他用户进行交流。文档编号G06F17/30GK1908938SQ200610106760公开日2007年2月7日申请日期2006年8月3日优先权日2006年8月3日发明者于潇洋申请人:于潇洋
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1