CN1764916A - 用于频率计数的方法和装置 - Google Patents

用于频率计数的方法和装置 Download PDF

Info

Publication number
CN1764916A
CN1764916A CNA03826336XA CN03826336A CN1764916A CN 1764916 A CN1764916 A CN 1764916A CN A03826336X A CNA03826336X A CN A03826336XA CN 03826336 A CN03826336 A CN 03826336A CN 1764916 A CN1764916 A CN 1764916A
Authority
CN
China
Prior art keywords
event type
counting
frequency
count
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA03826336XA
Other languages
English (en)
Other versions
CN1764916B (zh
Inventor
翰奴·T.·T·拖伊沃南
安蒂·索瓦瑞
玛库斯·卡哈瑞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia Technologies Oy
Original Assignee
Nokia Oyj
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nokia Oyj filed Critical Nokia Oyj
Publication of CN1764916A publication Critical patent/CN1764916A/zh
Application granted granted Critical
Publication of CN1764916B publication Critical patent/CN1764916B/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9562Bookmark management

Abstract

一种存储器有效的方法和用于计算各种事件的频率的电子装置。用于存储频率数据的结构包括包含不同级别细节的频率数据(208,210,214)的主(204)和辅助(206)存储器。主存储器(204)是以完全可恢复的形式包括事件类型和计数信息单元的详细的存储器。辅助存储器(206)目标是较低细节级别的更为不常见的事件,并构建作为可由使用事件类型作为输入的散列函数定址的计数值的数组。另一个选项是利用散列函数从事件类型中获得一个缩短的ID并采用该ID作为用于相应计数的寻址键。根据所检测到的事件类型频率,事件在主(204)和辅助(206)存储器之间移动。本发明被用在建议引擎中,用于分类和排序存储在访问因特网的浏览器中的书签。

Description

用于频率计数的方法和装置
技术领域
本发明一般涉及用于各种事件的频率计数的方法和装置。本发明特别与分类和排序存储在浏览器中用于访问因特网的书签相关。
背景技术
在过去的十年里,对存储和分类信息的总体需求以非常快的速度增长。这种现象不止出现在因特网上和信息的大量存档上,不幸的是,也出现在虚假情报上。人们趋向于通过网络冲浪来自我娱乐并查找新闻、有趣的聊天、相关各类作品的业余爱好、讨论区、笔友等,且不忘查找相关某个当前和所困扰事情的特定信息的重要结果。通过将链接列表保存为网页浏览器中所谓的书签,某些页面和网站很快能找到它们加入到某人喜爱的或“最重要的”链接列表的方式。随后,从上述保存的书签的列表中选择相应链接就能够灵活地找到该网页。书签典型地包含一个用于识别目的地名称和一个导向目的网站和/或页面的URL(统一资源定位),它们被描述为顺序链接元素的线路或有时更具描述性地描述为包括所述元素的节点和叶子的树型结构。当根据某些标准将大量书签组织成树型结构时,例如,相关所喜欢页面的话题的链接分类利用例如“新闻”、“运动”、“业余爱好”或“工作”作为节点名称,从相连的叶子中可以容易并快速地找到页面。图1示意一种情形,其中除了其他更喜欢的外,WAP(无线应用协议)入口(激励)的网站地图呈现为一个分级树型结构,左边提及了独立的网站。该情形符合书签经常在浏览器中可视化显示的情形。
然而,传统的网络浏览器对没有特定导航的书签不进行分类或排序,用户不得不通过创建树型结构并将链接元素插入到适当位置来用手完成这个过程。活跃的网络冲浪者积极地搜索新的有趣的网页,他们的书签收集很容易地涨到几百或甚至几千个链接。明显的是没人能够坚持组织如此巨大数量的书签,最后手动分类过程很可能因浪费时间而被完全放弃。
索尼爱立信公司已经发起了一个新的称为“MOVA SO 211i”的I-模式双频带电话,其包含一个新的称为“电子邮件分类”的特征,该特征以频率顺序列出邮件地址。尤其是在通常仅为用户提供诸如小显示屏的有限数据可视化方法的移动电话中,这种帮助用户从一串其他数据中快速挑选出他们所需要的数据的特征是至关重要的。
在上述事实中发现了手动排序信息的一个问题,即所生成的树型结构典型地仅仅反映了树的元素之间的实际结合,例如基于主题:业余爱好、新闻、工作、主页与子页的相对关系等的划分。由此,相应时间的或统计的相互关系没有被保存。这些时间特征,例如最后一次使用网页是什么时候,或统计特征,例如根据总的访问数存储的链接的分类等,在许多情况下对信息搜索者来讲可能比实际的信息更有价值。
例如,因特网服务管理/书签问题已经在许多独立研究[1-3]中报道了,这些研究表明优选的内容必须是每一个用户容易访问的,并且有用的服务频繁地被重复访问达到象是重新访问的有线网络中的网页访问量的81%。此外,书签的手动管理即使是有丰富UI(用户接口)的个人计算机上也是困难的,而且由于用户有选择地访问较大范围的特定服务时,解决方法应该工作于多种服务而不是仅仅使用一个入口。此外,用户也关心纯服务器解决方案中导致低信任的用户的隐私问题。许多所列出的结果起源于固定的因特网使用。然而,服务管理/书签中的适应性的需求在移动装置中特别强烈,主要由于它们的尺寸小,这种移动装置具有有限的UI和计算能力。
发明内容
本发明的目标是减轻上述的问题并提供一种用于各种事件频率计数的自动解决方法。这个目标是利用安排用于至少在两个级别的详细程度上存储事件频率的方法和装置实现的。第一个和更为详细的级别用于频繁发生的事件,而相关很少发生的事件的信息维护在较为不详细的辅助存储中。这种方法适应最频繁的事件类型分组中的变化。这是通过在主和辅助存储之间移动事件类型实现的。本方法也可以为新近的事件分配比先前的事件更多的加权以便支持对事件频率中的变化的快速适应性。本解决方法计算较轻的加权而且其所需的内存同样是相当的低。本发明的工业适用性实例包括例如浏览器建议引擎、重复拨号器、电话菜单访问、文件访问、语音命令、手写识别和自动完成。本发明适合于在诸如PDA(个人数字助理)或移动终端的便携式装置而不是如为标准桌面计算机设计在计算上有更多苛求步骤的装置中实现。
术语“事件”在此是指值得注意的并可通过频率计数方法计算的行为。
术语“事件类型”是指根据某种事件特定特性可与其他事件分开的事件。这样,可能仅仅有一个或多个在同样类型下映射的部分不同的事件。
事件类型是用户可定义的是有利的并可以指出,例如在单个万维网站/页面访问的情况下,每当某个万维网站/页面被访问时,该特定网站/页面(事件类型)的计数就增加了。可选或另外地,如果对所有访问的网站/页面应用同样的事件类型定义,那么仅仅对于所有访问的万维网站/页面增加共同的计数。因此,概括地说,事件类型定义或者是狭义的(例如某个URL或某个程序的起动就是这样的一个事件类型)或者是广义的(事件类型是“网页访问”或“程序启动”,独立于是哪一个页面/程序真实地被访问/启动了)。上述的两个(狭义的/广义的)事件类型定义也可以用在同一频率计算实体中。而且,例如在因特网浏览情况下,手动定义所有用于频率计算的事件类型(网站/页面)是令人苦恼的,因此事件类型定义应该至少是部分自动和/或动态地完成。例如,如果因特网访问由频率计数方法监控,那么新的网站/页面(或相应URL)能够作为新的事件类型自动被识别,如果没有应用特定预定条件(例如某个URL被排除在计算之外等),则将计算该事件类型的频率。
术语“事件频率”是指由频率计数方法检测到的许多事件的发生。这样的事件可以包括:如上所述点击(某个)网页、程序启动、打开邮件等。然而,伴随某些事件,“频率”的概念可能被更直接地联系到它的传统和狭义的意义上,例如如果事件与时间类似“每小时键入的字符数”相关地被定义。总之,事件计数可通过引入(可能是事件特定的)基于例如用户偏好的对该计数方法的附加规则进一步受到限制。例如,如果将要计算点击某个网站/页面的总体点击数量,那么如果该网页被重复载入仅仅是为了访问它的子页面的话,那么仅对每次会话或每小时增加一次该事件的计数以便连续的点击不会没有必要地增加计数将能提供更为有效的信息。
本发明提供了优于手动频率计数和标记书签的几个优点。可能的事件类型的数量原则上是不受限制的,例如,在浏览器建议引擎中不同的URL(统一资源定位)的数量相当程度上依赖于实现本发明方法的装置的当前存储器和计算能力。该方法是逐步增长的,当发现事件时允许用最小的努力执行频率计数。在建议引擎的情况下,浏览器将每个访问的URL传递给所述引擎,其能够在任何时候查询到最佳分类的URL。用户不再需要显式地标记页面书签。另外,本发明提供对大量服务而不仅仅是由某个入口或搜索引擎支持的服务的适应性访问,并且也超越了不同载体(数据调用、蓝牙、WLAN:无线局域网等)。考虑数据安全问题,高级私密性的结果是:所有的数据都可存储在执行本发明的类似移动终端的个人通信装置中,而不是存储在服务供应商设备中。此外,通过例如为每个装置的用户帐号分配单独的频率存储器可用户独立地存储数据。另一种选择是将频率数据存储在便携式的媒体中,例如类似SIM(用户标识模块)卡的存储器卡,其可根据当时装置的用户容易地改变。当语境(context)信息在终端中通常是可获得时,本方法甚至适合于用户语境。本发明可以采用引人注意的和快速的用户接口,例如全面测试和所信赖的终端UI,而不是通过浏览器的特定情形下和可能麻烦的服务UI,并且利用各种各样的终端应用能够使它无缝地结合在一起。如上所示,意识到用户的因特网服务使用习惯的自适应浏览器因而包括本发明的建议引擎,有助于自动化大部分的传统手动服务管理,例如,为频繁使用的服务提供快捷方式、分类书签、建议完全是新的书签以及重新组织和构建访问历史记录。同样的推理也应用在其中执行事件的频率计数的情形下。
根据本发明的方法,用于由有能力处理和存储数据的电子装置执行事件的频率计算,所述频率信息存储在主和辅助存储器中,包括步骤:
-定义至少一个事件类型,其频率将被计算;
-当事件发生时检测将被计算的所述类型的事件;
-检验所述事件类型是否已经包含在所述主存储器中;
-如果包含了,为所述主存储器中的所述事件类型增加计数;
-否则为所述辅助存储器中的所述事件类型更新计数。
根据本分明的另一方面,提供一种通信网络中可操作的个人通信装置,包括处理方法以及用于处理和存储指令和数据的处理方法和存储器单元;所述个人通信装置安排用于定义至少一个事件类型,其频率将被计算;当事件发生时检测将被计算的所述类型的事件;检验所述事件类型是否已经包含在所述主存储器中;如果包含了则为所述主存储器中的所述事件增加计数,否则为所述辅助存储器中的所述事件类型更新计数。
根据本发明的一个实施例提出一种基本的频率计算方法。主存储器是由<事件类型,频率>对组成的表。事件类型以字符串形式表示。辅助存储器有两种可选择的构建方式:在第一种选择中其是由散列的事件类型索引的计数器数组,即散列表。事件类型本身不存储在辅助存储器中。在第二种选择中辅助存储器由<事件类型签名,频率>对组成,其中签名是由散列函数得到的。事件类型被缩写为例如限制在4个字节长度内的散列值。根据将计算的总的事件数、采用的散列函数和签名长度,这个解决方案也可在没有和仅有少量签名冲突的情况下提供精确的频率信息。另外,第二种选择支持对辅助存储器中的事件进行排序。同样还给出了频率加权方法,用于稀少的频率不是非常有用而应该为当前的事件给予更多加权的许多自适应应用,由此容易比较全面地适应用户兴趣的变化。
在本发明的另一个实施例中,通过为用户想要访问的服务提供轻松的导航的个人适应的链接特别为移动浏览器建议引擎实现了本发明,由此提高了移动因特网服务的可访问性。事件类型代表不同的URL。所述建议引擎自动产生、分类、排序和移动建议内容。所述引擎给予频繁被访问的网页较高的优先级以提供常常是有用的建议,给予那些近来被访问的网页较高的优先级以适应兴趣的变化,以及给予网站的第一个页面较高的优先级以通过从大量的网站中生成少量的建议确保对大量页面的多样性和访问。
从属权利要求公开了一些本发明的优选实施例。
附图说明
以下通过参考附图较详细地描述了本发明,其中:
图1示意了除了左边提及的一些独立网站外的一个WAP(无线应用协议)入口的网站图。
图2描述了本发明的整体概念,包括像主和辅助存储器的基本特征以及用于执行所建议的方法的控制实体。
图3是公开了本发明的第一个实施例的流程图。
图4示意了终端显示上的频率排序链接列表。
图5以固定衰减常数描述了不同使用情况下的得分。
图6用两种不同的视图:网站视图和网站相关页面视图示意了终端显示上的频率排序URL。
图7示意了实际的入口主菜单和可选的其中链接是通过频率计数来排序的链接视图。
图8是一个装置的框图,在这个例子中该装置,实质上是移动终端,有能力根据本发明计算频率。
具体实施方式
已经连同现有技术描述了图1。如果链接的总数足够大,那么不管是多一些或少一些基于例如由链接所定址的网页主题的完全人工排序,用于某个链接的平均搜索时间将不可避免地增加。
参考图2,包含在本发明概念中的基本元件是两个负责存储事件数据的存储器:主存储器204和辅助存储器206,以及控制实体202,其实际执行更新和提供事件频率相关信息所需的过程。存储器204、206和控制实体202可以包括在同一物理装置201或分成几个功能上彼此连接的装置。主存储器204可以如所描述的208那样构建,包括作为一个字符串存储的事件类型和作为例如一个整数或实数存储的事件类型的总计数。正如由图表可以看出,也可能为计算频率定义事件类型相关基准,其中例如总的使用情况是以小时(时间)度量的而被访问的网页是以访问的次数度量的。利用事件类型或由其得到的导出因子作为输入,辅助存储器206中的数据以较低级别存储,可能仅仅在可由散列函数寻址的散列表中包含事件计数210。如果能给辅助存储器206分配一些更多的内存空间,那么为事件类型存储一个例如从事件类型得到的有限长度的散列值的真实标识符是有利的,见图标符号214。图2中还展现了描述主存储器204的内部构件的另一选项216。在这种情况下,特别为计算因特网网站/页面访问的频率应用频率计数方法。频率计数方法基本上将每一个被访问的网站/页面作为标识分别对待,与此同时,事件类型的自动定义是基于被访问网站/页面各自URL的。然而,如果喜欢独立计算网站和页面的频率,显然彼此成比例的网站和页面频率能够放在两个独立的存储器。接下来,在本发明的第一个实施例中将更详细地描述频率计数的基本方法。
图3从独立于所应用的硬件和软件方案的功能级别公开了所建议方法的流程图。方法在302启动之后,在步骤304中定义了其频率被计算的事件类型。根据现有流行的需求,例如包括访问的网页、网页/网站特定访问、邮件阅读/发送、使用时间等等,以灵活的方式有利地选择这些事件类型。另一方面,特别是如果算法仅仅包括于像网页浏览器的单个应用中,那么算法有一些预定义的例如要计数的事件类型的设置,以及甚至于一开始就独立地执行以便用户不必在设置上花费时间除非他明确地想摆弄那些设置,都是可取的。在步骤306中发生了一个事件,而且如果该相应的事件类型包括在要计算的事件类型列表中(步骤308),那么由实现本发明的线路/软件检验该事件。如果不是那种情况,系统仅仅等待下一个要发生的事件。此时,在步骤310,如果事件类型被列出,那么经由主存储器例如逐个元素地检验事件类型是否已经包括在主存储器中。主存储器中的单个单元可以包括例如两个信息元素:用于事件类型标识的字符串和作为整数的计数值。在步骤312,如果找到了该事件类型,则增加相应的计数,在此之后重新排序存储元素以维持它们在存储器内的优先顺序,在大多数情况下最有利的排序是递减顺序。另外,在步骤314,增加与所检测的事件类型相关的辅助存储器中的计数,换句话说,如果根本就没有找到该事件类型,那么就在辅助存储器中为该事件类型建立并初始化一个新的入口。
用于访问辅助存储器的寻址模式取决于所选择的存储器技术。如果存储器中的各别元素的大小将被最小化,那么事件类型可以被用作散列函数的输入,该函数为存储器中的事件的技术返回一个索引。然后增加计数。在这种实现方法中,几个事件类型可以有相同的散列值,导致这样一种情况,即相应的计数器反映共享共同的散列值的所有类型的事件的总数量。当计数不精确时,那么它趋向于比真实计数要大。应注意的是,尽管当以节省存储器空间为目标时输出大小超过输入大小的一般函数在这种使用类型中不能很好的被执行,通过“散列函数”,并不涉及通常作为散列函数而众所周知的任何特定数学函数,并且基本上有许多不同的但合适的选项。作为输入数据(事件类型或其的派生物)的短标识符的散列函数的输出可称为,例如签名。
管理辅助存储器的另一种选项分别以从事件类型计算散列值或相应标识符值为基础,而不是使用它们来索引辅助存储器,散列值与事件类型计数一同存储在辅助存储器内并用作事件类型标识符。然后,结果散列值/计数对(存储器元素)可自由地在辅助存储器中排序,而且可以适当地选择元素的总数,实际上定义了存储器大小,作为存储无论如何将支持的通过它们的散列值标识符可识别的最大频率事件。无论何时用于事件类型的计数都应该被更新,但是散列码不是从两个存储器中任何一个找到的,应该在包含计数的优选初始化值的辅助存储器中创建与事件类型相关的新的数据存储元素。依赖于所利用的散列函数,冲突仍然会偶尔出现,但是比第一种解决方法中的可能性小很多。由于冲突很少,这种解决方法提供了更精确的频率计数。缺点是:给定了辅助存储器的有限大小,一些(低频率)事件类型可能不得不被从存储器丢弃因而被丢失。因此,当计数不精确时,计数趋向于比真实数量小。
当利用上面的第二种选择用于定址辅助存储器地址,最后在步骤316中排序辅助存储器中的元素。除了涉及两个存储器的简单频率更新过程之外,也可偶尔提出一个特殊解决方法,在该方法中辅助存储器中具有明显递增计数的第一事件类型应该移动到主存储器中,于是主存储器的具有或多或少死亡特性的最后一个事件类型应被移动到辅助存储器。例如,处理主和辅助存储器之间的数据交换的一个可能性是计数已经在辅助存储器中被更新之后完成。辅助存储器中所更新的计数与主存储器中的最小计数比较,如果前者比后者大,那么包含事件类型以及相关计数信息单元的两个存储元素在存储器之间移动。因为依赖于实现的主和辅助存储器之间所应用的存储器技术可能不同,所以在数据交换中可能也需要数据转换。可以以下文中所描述的多种来修改和扩展图3的基本方法。
接下来的伪码举例说明了所建议的有效存储频率计数算法的实现的一种一般结构,其不应该认为是用于大多数场合的最佳方法。其次,在此仅用单条指令表示的某些操作等在目标装置中典型地需要几条指令适当地实现。例如,函数“add_one_count”和“count”用事件类型作为关键字访问主存储器,下面的伪码中以“if there exists i suchthat primary[i].event_type=e...”表示。如果为效率的需要,可以使用诸如散列表或搜索树这样的访问结构来索引主存储器。然而在大多数情况下简单的线性搜索可能就足够了。
代码包括两个全局参数,即m以<字符串(事件类型),整数(计数)>对形式定义了主存储器的大小,n以指示计数或在浏览器建议引擎的情况下指示特定对页面的点击的整数形式定义了辅助存储器的大小。
当选择m和n时,如果仅仅有喂的内存空间可用于主和辅助存储器,那么可以为k,即需要高质量信息的最高频率事件类型的数量,假定一个固定值。选择m>k,例如m=1.5*k。这样就留下主存储器尾部的0.5*k=0.33*m作为k个最高频率和辅助存储器之间的缓存。根据应用和可用的内存量选择n>m,例如n=10*m。应该注意的是,根据事件类型的名称有多长等,主存储器入口可能比辅助主存储器入口需要更大数量的信息。
代码带有以双斜线(//)标识的注释以证明对所执行的动作的进一步理解是正确的,并使其易于理解。
    //Basic frequency counting pseudocode implementation

    Public functions

    init://setup of primary and secondary storages

    add_one_count(string e)://increase the count of event type e by one

    count(string e)://return the(approximate)count of event typye e

        kth_best(integer k)://return the kth highest<event type,count>pair,

    //k<=m

    Internal functions

          upgrade(integer hash,string e):

                   //moves the count indexed by hash(last observed as type e)

                   //from secondary to primary storage and downgrades the

                   //least count from primary storage to secondary storage
        <!-- SIPO <DP n="10"> -->
        <dp n="d10"/>
      move_up(integer i)://keep primary storage sorted by count,after an

                         //increase inthe count of ith event

      hash(string e):    //a hash function from strings to[1,n](to secondary

                         //storage)

      Data structures

      primary:

      //Array of m<string,integer>pairs,representing event types and their counts,
//sorted in decreasing order by count.Contents are referred to by notations
//primary[i].count(the i:th highest count)and primary[i].event_type(the event//type
which has the i:th highest count).Indexing runs from 1to m.

        sencondary:

      //Array of n integers(counts),unsorted.Contents are referred to by notation
//secondary[i].count(count associated with the i:th entry in the array).Indexing//from
1to n.

      function init:                  //setup of primary and secondary storages

      //a)<event type,count>pairs

      primary:=array of m<string,integer>pairs;

                             //b)counts

      secondary:=array of n integers;

      for(i:=1to m)

           primary[i].event_type:=″″;

           primary[i].count:=0;

      endfor;

      for(j:=1to n)

           secondary[j].count:=0;

      endfor;

      function add_one count(string e):

                                             //increase the count of eventtvpe e by 1

      if(there exists i such that primary [i].event_type=e)the 
        <!-- SIPO <DP n="11"> -->
        <dp n="d11"/>
    primary[i].count++;
move_up(i);
else

    hash:=hash(e);

    secondary[hash].count++;

    if(secondary[hash].count>primary[m].count)then upgrade(hash,e);
endif;
    function count(string e):    //return the(approximate)count of event type e
if(there exists i such that primary[i].event_type=e)then

    return primary[i].count;
else

    hash:=hash(e);

    return secondary[hash].count;
    endif;
function kth_best(integer k):

                       //return the kth highest<event type,count>pair,k<=m
if(k<=m and primary[k]!=0)then

    return pair(primary[k].event_type,primary[k].count);
else

    return pair(″″,0);
endif;
function upgrade(integer hash,string e):
//Moyes the count indexed by hash and lst observed
//as type e from secondary to primary storage and
//downgrades the least count from primary storage to
//secondary storage.
//1.release space in secondary storage:
count:=secondary[hash].count;
secondary(hash).count:=0;
        <!-- SIPO <DP n="12"> -->
        <dp n="d12"/>
                      //2.copy count from primary to secondary storage:
down_hash:=hash(primary[m].event_type);
secondary[down_hash]:=primary[m].count;

                      //3.copy upgraded information to primary storage:
primary[m].event_type:=e;
primary[m].count:=count;
move_up(m);
function move_up(integer i):

                    //keep primary storage sorted by count,after an increase

                    //the count of ith event
while(I>1and primary[i].count>primary[i-1].count)

         swap primary[i]and primary[i-1];

         i--;

    endwhile;
function hash(string e):

    //a hash function from strings to[1,n](to secondary storage)

    //A wide variety of suitable hash functions exist as prior art,see e.g.
 
    //-M.V.Ramakrishna and J.Zobel:Performance in practice of string
 
    //hashing functions.

    //-Proc.Fifth Int.Conf.on Database Systems for Advanced Applications,

    //Melbourne,Australia,April 1-4,1997.

    //-D.E.Knuth:The Art of Computer Programming.Volume 3:Sorting and
 
    //Searching,Addison-Wesley,Reading,Massachusetts,1973.

    //T.H.Cormen,C.E.Leiserson,and R.L.Rivest:Introduction to Algorithms,
 
     //MIT press,Cambridge,MA,1990.

    //A simple and practical method(Ramakrishna&Zobel),using C++

    //syntax:

    int h=strlen(e);       //int assumed to be 32bits

    for(char*key=e;*key!=0;key++)
        <!-- SIPO <DP n="13"> -->
        <dp n="d13"/>
          //^:bitwise xor;<<:left shift;>>:right shift

          h=h^(<<5+h>>2+*key);

    return(h%n)+1;
正如上面所看到的,基本频率计数算法能够以一种简单的方式实现,采用该解决方法的接口可以仅仅由几个不同的函数组成,例如当事件发生时用于增加某个事件类型计数的函数(add_one_count),以及另一个函数用于检索主存储器列表中所期望的事件类型的计数(count)或相应检索同样也在主存储器列表中排序的第k个最高事件类型的数据(kth_best)。回忆起辅助存储器仅包含没有真实事件数据例如名称或其他描述标识符的频率,则不值得照此从辅助存储器中检索类似仅仅是数字的未处理的频率数据。
当检测到一个正在发生的事件时,假定采用本发明的装置调用函数add_one_count并为其提供当前的事件类型。由该函数检验该事件类型是否已经包含在主存储器中。如果是,增加上述事件的计数。在这个例子中,增量固定为(1)但是在实践中增量可根据事件类型或其他有利的因素来确定。而且,调用内部函数move_up重新排序主存储器。然而,如果事件类型不在主存储器中,则通过内部函数hash由事件类型(或该事件的其他原始特性)计算相应的散列值,并将结果辅助存储器中的计数增加一个所选定的数,在本特定例子中固定为(1)。如果该计数足够的高以致可以插入到主存储器中,则调用内部函数upgrade,其将该计数移到主存储器并将最低计数从主存储器降级到辅助存储器中。另外,函数upgrade调用函数move_up以排序主存储器。
函数count和kth_best无需很高的复杂性就可以实现。函数count经过主存储器并寻找作为输入给定的事件。如果找到了,则返回相应的计数,否则首先通过由该事件类型计算散列值并检验该计数以从辅助存储器中检索该计数。函数kth_best简单地返回事件类型和主存储器中第k个元素的计数。
理论上,在add_one_count过程中无论何时当单个计数冒着超过所使用数据类型的最大可提供值的危险时都存在数值溢出的较小可能性。在那些推测起来罕见的场合中,可以按比例减少所有的计数以保持它们的相互顺序,但是丢失了原始的计数统计,或者如果可能的话,可以改变单个事件类型的数据类型来支持更大的数值,例如从整数到长整数等。
下面介绍用于计算频率,尤其适用于给最近的事件更多加权的情形,的另一可选实现。这个可选实现有下面几个特性:
-计数作为实数而不是整数存储;
-事件类型的频率可由任意实数改变,而不仅仅是1,这样允许为不同事件使用不同加权。
-一个当时间增长减小所有计数的老化机制。这允许较早的事件逐步减小加权。老化因子(典型地略微小于1)是一个新的全局参数。为了效率的原因,计数没有被更新,而是维护一个校正因子,利用它来调整输入和输出的值。
-混合两个不同事件类型的频率的可能性非常低。
-所犯的错误是对频率的估计不足(然而,有足够小的老化因子和合理的存储器大小,该错误是可以忽略的)。
-以消耗略微多些的内存和处理能力为代价实现更为精确的频率。
辅助存储器是包含<散列码,计数>对的表,该表按照计数以递减顺序排序。唯一散列码的总数比辅助存储器的大小要大得多。该码包含三个全局参数,m如在第一选项中那样以<字符串(事件类型),实数(计数)>对的形式定义了主存储器的大小,注意涉及计数变量的从整数到实数的变化,n以<长整型(散列码),实数(计数)>中的形式定义了辅助存储器的大小,以及一个定义老化因子(实数)的称为p的新变量,通过该因子降低计数。
在可选的解决方法中,除了现有的函数init、add_count(增量无需等于+1)、count和kth_best之外,引入一个新的公共函数:
downweight://an aging mechanism,multiply all counts by factor p
相应地,除了函数update、move_up和hash之外,引入下面的新的内部函数:
    move_down(interger i):

        //keep primary storage sorted by count,after a decrease in the count ofi

    move up_secondary(interger i):

        //keep secondary storage sorted by count,after an increase in the count ofi

    move_down_secondary(interger i):

        //keep secondary storage sorted by count,after an decrease in the count ofi

    readj ust_counts:

        //upd ate all counts with the correction factor f and reset f

    Data structures

        primary:

    //Array of m<string,real>pairs,comparable to the primary storage in the first

    //implementation

        secondary:
 
    //Array ofn<long,real>pairs,representing hash codes of event types and their

    //counts,sorted indecreasing order by count.Contcnts are referred to by

    //notations secondary[i].count(the i:th highest count in the array)and

    //secondary[i].hash(the hash code which has the i:th highest count in the

    //array).Indexing from 1ton.

        f:

    //Correction factor for counts for aging:the adjusted″true″value is f*count.In

    //the same way,when a count is incremented by a,the internal value is updated

    //by a/f to obtain a value proportional to the internal representation.

    //Pseudocode implementation for more versatile frequency counting

    //implementation with frequency weighting support.

    function init:                //setup of primary and secondary storages

    primary:=array of m<string,real>pairs;//<eventtype,count>pairs

    secondary:=array of n<long,real>pairs;//<hash(event type),count>pairs

    for(i:=1to m)
        <!-- SIPO <DP n="16"> -->
        <dp n="d16"/>
        primary[i].event_type:=″″;

        primary[i].count:=0;

      endfor;

    for(j:=1to n)

       secondary[j].hash:=0;

      secondary[j].count:=0;
   endfor;
   f:=1;                                  //correction factor for counts
function add_count(string e,real a):

                     //increase(or decrease)the count of event type e by a

    if(there exists i such that primary[i].event_type=e)then

       primary[i].count:=primary[i].count+a/f;

       if(a>0)then

           move_up(i);

       else

           move_down(i);
 
       endif;

       if(primary[i].count>FLT_MAX/2*p)then

           readjust_counts;          //update counts if accuracy is at stake

       endif;

      else

          hash:=hash(e);

       if(there existi such that secondary[i].hash=hash)then

           secondary[i].count:=secondary[i].count+a/f;

      else

           secondary[n].hash:=hash;

          secondary[n].count:=a/f;

              i:=n;

      endif;
        <!-- SIPO <DP n="17"> -->
        <dp n="d17"/>
       if(secondary[i].count>primary[m].count)then

           upgrade(i,e);

       else

           if(a>0)then

               move_up_secondary(i);        //sort the secondary storage

           else

               move_down_secondary(i);

           endif;

       endif;
   endif;
function count(string e):          //return the(approximate)count of event type e

    if(there exists i such that primary[i].event_type=e)then

       return primary[i].count*f;
   else

           hash:=hash(e);

       if(there exists i such that secondary[i].hash=hash)then

            return secondary[i].count*f;

       elsif;
            return0;

       endif;
   endif;
function kth_best(integer k)://return the kth highest<event type,count>pair,k<=m

    if(k<=m and primary[k]!=0)then

       return pair(primary[k].event_type,primary[k].count*f);

    else

       return pair(″″,0);
   endif;
function downweight:      //an aging mechanism,multiply all counts by factor p
   f=f*p;//Do not actually multiply counts,just update the correction factor
        <!-- SIPO <DP n="18"> -->
        <dp n="d18"/>
   if(f<FLT_MIN*2/p)then       //update counts if accuracy is at stake

       readjust_counts;
   endif;
function readjust_counts  //update all counts with the correction factor f and reset

                       //f to be called when numerical accuracy is at stake
   for(i:=1to m)

       primary[i].count:=primary[i].count*f;
   endfor;
   for(j:=1ton)

       secondary[j].count:=secondary[j].count*f;

     endfor;

     f:=1;
function upgrade(integer i,string e):
   //Moves the count indexed by i and last observed as type e from secondary to
   //primary storage and downgrades the least count from primary storage to
   //secondary storage.
   //1.release space in secondary storage:
   count:=secondary[i].count;
   remove_from_secondary(i);       //removes row i from secondary storage and

                     //shifts rows [1..i-1]one row down(to rows[2..i])

                     //so the first row in secondary storage is empty.
 
                     //function not presented here as considered obvious
   //2.copy count from primaryto secondary storage:
   down_hash:=hash(primary[m].event_type);
   secondary[l].hash:=down_hash;
   secondary[l].count:=primary[m].count;
   move_down_secondary(l);
   //3.copy upgraded information to primary storage:
   prima ry[m].event_type:=e;
        <!-- SIPO <DP n="19"> -->
        <dp n="d19"/>
   primary[m].count:=count;
   move_up(m);
function move_up(integer i):

    //keep primary storage sorted by count,after an increase in the count of i
   while(i>1 and primary[i].count>primary[i-1].count)

      swap primary[i]and primary[i-1];

      i--;
   endwhile;
function move_down(integer i):
   //keep primary storage sorted by count,after an decrease in the count of i
   while(i<m and primary[i].count<primary[i+1].count)

      swap primary[i]and primary[i+1];

      i++;
   endwhile
   //Note:no downgrade operation to switch entries in primary and secondary
   //storage if this count is smarller than the largest entry in the secondary storage.
   //Reason:event names for entries in the secondary storage not available.

     function move_up_secondary(integer i):
   //keep secondary storage sorted by count,after an increase in the count of i
   while(i>1 and secondary[i].count>secondary[i-1].count)

     swap secondary[i]and secondary[i-1];

     i--;
   endwhile;
function move_down_secondary(integer i):
   //keep secondary storage sorted by count,after an decrease in the count of i
   while(i<m and secondary[i].count<secondary[i+1].count)

     swap secondary[i]and secondary[i+1];

     i++;
   endwhile;
        <!-- SIPO <DP n="20"> -->
        <dp n="d20"/>
    function hash(string e):

      //a hash function from string to[1,2^32-1](to secondary storage)

      //by Ramakrishna&Zobel,using C++syntax:

      int h=strlen(e);  //int assumed to be 32 bits

      for(char*key=e;*key!=0;key++)

          //^:bitwise xor;<<:left shift;>>:right shift,%:modulo

    h=h^(<<5+h>>2+*key);

    return h+1;
由可选实现方法可以看出,无论何时降低加权周期改变或另外将执行加权降低,都能够简单地通过使用普通老化因子p更新校正因子f来有效地实现频率加权。只有当计数确实被插入到或是从主存储器或辅助存储器检索时才执行实际的计数加权。可以如函数add_count将增加的计数数量作为输入参数那样独立地加权不同事件类型,这样就略微地区别于最基本实现的函数add_one_count。
上面用于实现多用途频率计数方法的本发明的第二个实施例提出的基本结构的特定目的在于形成浏览器建议引擎的核心。建议引擎通过从建议列表中自动生成、排序和移动维护包括网站、页面或两者的因特网链接。另外,频繁访问和最近访问的网站/页面优先于其他网站/页面。通常的方法是:每个页面有一个得分,反映它被估计的关联性。最近第一次访问的网站也是受到优待的,因为引擎应该快速适应新的兴趣从而减少手写URL的需要。网站或页面的总分随着频率自然地增加,但不一定是以线性的方式。
图4公开了一个执行根据本发明所建议的方法的新式移动终端402的显示屏上的假想视图。因此,可以在链接列表的顶部看到最经常访问的因特网页面或网站,并且无需在大量可用链接中滚动和费力选择相关的困难下选择。除了带有很可能单独存储的网站和页面划分的纯粹的URL信息之外,也可从HTML代码中提取页面名/标题(或相应的)域并与频率数据一起存储。或者,用户可以为优选的网站/页面定义一个标识符。这种或者自动生成或者用户发起的附加标识数据对目标网站/页面的描述有时候比URL描述的更多,因此可以一起使用它们或取代URL分类如图中所示的列表可视化目的。
每个页面p404页要存储的信息可包括,例如URL、对应页面的名称和分数、作为字符串存储并用作页面标识符的URL、作为字符串存储的名称(如果找到或给定任何一个)以及作为浮点数存储的分数。另外,所谓的布尔型变量visited_this_session用于指示在当前浏览会话期间的访问。相应地,每个网站s 406维持的信息包括作为字符串存储并用于网站标识的网站地址、作为浮点数的分数和布尔变量visited_this_session。如果看出是有目的的,还有单独的,可能是用户可定义的,标识符(ID)能够用于例如显示屏上的网站可视化。
如果存储了上面提到的关于被访问页面及对应网站的数据并且出现了寻找在所选择的网站下的频率排序页面的需求,那么可以通过使用网站URL作为页面存储器中元素的条件从页面存储器执行搜索以筛选出与其他网站相关的频繁被访问的页面。
有用的全局数据结构包括一组建议页面(Rec)、当前会话期间已访问的一组新页面(New_Rec)、一组建议网站(Sites)、作为浮点数的总分数(total.score)以及该会话期间的访问次数(total.visited_this_session)。
如果实现了网站级的建议,那么需要每个网站存储的信息。例如,建议主菜单可以包含分级网站,并且当用户选择了单个网站时弹出包含该网站内的页面的分级链接的相应子菜单。如果没有实现网站级的建议也可以使用Sites数据结构;然而,并不需要显式地存储该结构,即:{s.address|s in Sites}={address(p.URL)|p in Rec}。Sites由所存储页面的网站组成。如果建议仅包括(重新排序的)书签,那么除了书签已经需要的数据之外,仅仅需要p.score、p.visited_this_session、total.score、total.visited_this_session。从操作的观点来看,可以如下采用上述的数据结构(注意利用在此之前描述的函数可有效地实现分数的更新):
-浏览会话之前:
    set p.visited_this_session=false for all pages p in Rec

    set s.visited_this_session=false for all site s in Sites

    -会话期间,当请求Rec中的网页p时:

    set p.visited_this_session=true

    set s.visited_this_session=true for the site s of p

        //the score is increased by a certain amount if the page(or site)was visited

        //during a session,regardless of the number of visits

    -会话之后,更新所有的分数并排序:

        for all pages p in Rec:call update_score(p)

        for all sites s in Sites:call update_score(s)

    call update_score(total)

         function update_score(u){

            u.score=u.score*session_decay_constant

            if u.visited_this_session=true then

                 u.score=u.score*frequency_decay_constant+1

         //the decay_constants between 0and 1 determine the adaptation speed

    sort recommendations p inRec in descending order by their scores p.score

    当访问新的页面时:在会话期间,当请求的页面p没有包括在
Rec或New_rec中时,创建建议页面p并将其插入到New_rec中并存
储下面的信息:

    p.URL:URL of the page

    p.name:page title(according to a selected naming scene)

    p.score=0     //an individual page is not recommented after only one

    //visit to it

    if address(p.URL)is not in Sites and is different from the sites in New_rec

    set p.score=1

    //a new site is recommented already after one visit,but only the first page in it
 
    如果p已经在New_rec中,不做任何动作。会话之后以及为
New_rec中的每一个入口p更新建议分数之后:
        <!-- SIPO <DP n="23"> -->
        <dp n="d23"/>
    an entry is added for site address(p.URL)to Sites(if not there yet),set s.score=1

    pis added to Rec and removed from New_rec
根据可用内存资源,可以通过散列法减少New_rec所需的空间:例如,不为新入口的存储URL和名称,而仅存储由URL得到的散列键。如果曾经有一次的话,那么在第二次访问记录URL和名称。将时间戳添加到初始数据结构以便于自动数据据过期。为了进一步压缩,仅有k个最佳建议的全部信息保存在内存中,这里的k至少和将显示给用户的建议最大数量一样大。剩下的建议使用散列法存储。如果散列的网页上升到顶部的k个网页,那么它被升级到主存储器。分别地,如果网页从最佳的k个中退出,那么它就被移到散列表中。在散列表中仍然留有冲突的可能性;然而,鉴于散列的网页不是频繁地被访问,因此影响或多或少是可忽略的。散列表可以是比较小;实际上仅几千个字节就足够了。
所采用的得分方案可以利用例如呈指数衰减的曲线。从函数update_score(u)重新调用公式p.score=p.score*session_decay_constant的结果导致分数逐渐衰减:最近的事件有更多的加权,但旧的事件也有一定的加权。根据会话(会话作为一类时间单元)、根据日历时间(例如带日期的系统时钟)或根据一些其他的优选参考可以调整分数以衰减。当分数根据会话衰减时,其事实上它也适合使用频率。对于任何两个页面p1和p2,p1.score/p2.score的比值保持为常数并且未访问页面的相对分数不变。通过下面的印象,最近会话中访问的网页分数可以记为1:
if p.visited_this_session=true
  then p.score=p.score*frequency_decay_constant+1
因此,当访问网页时老化分数逐步衰减,并且高访问频率成比例地下降,因为例如对用户来讲从5次访问增加到50次比从500次增加到550次更有意义。
当考虑等式p.score=p.score*decay constant(覆盖会话和频率衰减常数)和指数衰减时;之前的t时间单元(例如,会话)的事件的作用可以写成score(t)=decay_constant^(t-1)。例如:假设session_decay_constant=0.9,那么
in the latest session:score(1)=session_decay_constant^(1-1)=1
in the previous session:score(2)=session_decay_constant^(2-1)=0.9
10sessions ago;score(10)=session_decay_constant^(10-1)=0.387。
另外,一个等价的表达式可以写成score(t)=2^-(t-1)/h。h个时间单元后会话的作用被减半,并且指明半衰期h比指明decay_constant更为容易;可以使用decay_constant=2^-1/h得到decay_constant。衰减常数将限制当每一次会话中的网页被访问时所得到的最大分数:对于一个大的得分而言,由于衰减导致的下降比给分数加1更大。
用p.score’表示新的分数:
p.score’=p.score*session_decay_constant*session_decay_constant+1
对于最大的分数p.score,p.score’≤p.score,因此
p.score≤1/(1-session_decay_constant*frequency_decay_constant)
例如:session_decay_constant=frequency_decay_constant=0.9=>p.score≤5.3。
分数的范围取决于衰减常数并且绝对值不能越过不同的衰减常数进行比较。由于当前值取决于该常数的先前值,所以衰减常数中的变化逐步生效。
图5中示意了每第i个会话中所访问页面的得分曲线,i=1,3,5,10,15。当网页被访问时分数升得越高,而衰减则相反。在该图中,设置session_decay_constant和frequency_decay_constant等于(0.9;h≈6.6)。
通常,概率比未处理的分数具有更普遍的解释。可以通过页面与总得分的简单比率计算页面访问概率(用户访问网页p)=p.score/totle.score,其中totle.score是能够得到的最高分数。例如,如果建议应该是非常具有选择性的,那么应该选择越过某个所期望级别的带有访问可能的4个最佳建议,例如0.7。网站访问概率各自可以通过s.score/totle.score来计算。另外,用于两级建议的条件概率,这里的网页建议是在网站内产生的,被定义为概率(用户在网站s访问网页p |用户访问网站s)=p.score/s.score。可采用这个概率以显示至多例如2个带有用于已经在第一级上的每个网站的至少0.75的条件概率的最佳建议。在网页访问之后,应该减小在同一次会话中重新访问同一页面的概率,例如p.score/s.score/2。
图6公开了移动终端显示屏上的两个可选视图。左边的视图602示意了以递减频率计数顺序列举所分级网站的建议菜单。于是用户可以选择一个所喜欢的网站并访问页面的排序列表,留意视图604,在该网站下最频繁和/或最近(例如从最后一次访问以来所测定的经过时间)访问的网页。这种类型的构成方法使用简单,并且如果之前已经访问了链接的话那么仅仅需要用户最少的努力就可以找到正确的链接。另外,之前未访问过的链接能被呈现在例如排序列表的底部以便用户不必分别查找它们。有利的是,不必依靠上述的分级网站和相关页面类型实现方法也能直接探索网站/页面列表。
参考以前所提出的本发明的使用案例,存在其他用于帮助容易地在频率排序列表之间导航的方法。例如,可能以不同颜色/风格突出显示以前访问过的或其他相关网站/页面。在一些场合中可以通过软件自动地执行网站/页面的突出显示,例如通过在第一次访问网站/页面时分析特定HTML标记的值,然后定义链接可视化中随后将使用的网站/页面特定的突出显示变量。另外,用户可手动定义将与其他网站/页面数据一起存储的网站/页面特定突出显示指令。
此外,许多因特网页面,尤其是入口菜单,在小屏幕上显示略长且难于处理,因此需要在多个满屏之间遍历。因为上述提及的网站-页面组织结构有助于提供网站及其网页之间轻松的导航,可以利用相应的(主)页面-子页面划分以便用户能够访问最频繁(或最近)访问的子页面链接。子页面作为一个概念实体不必位于同一网站内或具有对应主页面的部分一致的地址。同时,主页是这样的一个页面,其包括链接到由此称为主页面的子页面的其他网页的链接。在典型的情况下,入口主页面包括到各种各样子页面的链接,其的主题完全不一样,如一些子页面是新闻、运动或与天气相关,一些子页面涉及具有不同的、经常是业余爱好相关话题的讨论板,一些子页面仅仅是赞助商的广告,而一些子页面是类似网站管理员公告的一般性广告通知。单个用户很少有兴趣积极地跟随所有来自入口主页面的子页面链接,并且最终形成了收集所有链接访问的绝大多数的子页面的离散组,在这种情况下,当访问页面时以频率计数(另外,根据最近的访问日期)排序顺序示意子页面链接是有利的。这个功能可以是自动的或手动的;无论何时用户访问包含到以前所访问子页面的链接的页面,就将子页面的排序链接列表显示给用户,或可选地,照那样首先给用户显示页面,但作为对特殊用户启动命令的响应,当根据频率计数和其他优选排序规则重新组织时将子页面链接显示(例如以一个仅包括URL或其他ID的紧凑列表形式)给用户。可以相当简单地实现上述的功能,就如例如通过控制逻辑首先自动遍历所访问页面以便找到现有的子页面链接,该链接接着与存储器中的链接比较,最后基于所得到的频率计数建立分类子页面链接列表。
图7公开了移动终端显示屏上的视图702,其中一次仅能看到整个入口主菜单的单个满屏。现在用户可以从终端菜单704选择命令“喜爱的网页链接”以便灵巧地以由频率计数706分类的紧凑形式列出子页面链接。在这个例子中,为了更容易导航以页面标题/ID而不是实际的URL示意了子页面链接。
利用频率计数数据的另一个吸引人的可能性关系到文本自动完成,通过例如新式浏览器提供的功能。自动完成涉及文本预测引擎,该引擎基于以前书写的字符串,例如排序的和频率计数的网站/页面链接,利用概率数据完成部分书写字符串。至今,利用因特网浏览器作为一个例子,当应用多个选项时,例如如果部分书写链接与几个以前访问的、到达链接URL地址或ID(或另一个要完成的字符串)的开始的链接匹配,那么依字母顺序将这些选项呈现给用户。自动完成功能将获益于频率计数数据,因为无论何时存在多项选择时,可以将它们归类并以频率计数递减/递增的顺序呈现给用户。另外,为了建立更加完善的排序标准,可以使用从最近一次访问或最近表达(例如当键入URL时但不必要被访问)算起的过去时间。就因特网链接而言,属于其频率将被计算的事件类型组的相同数据可以同时用于链接建议和自动完成目的。可以在用户执行了链接选择之后正常地更新频率计数。同样,由于自动完成的基本补充是不可用的,尽管辅助存储器中具有较低计数值的数据不直接影响实际的自动完成步骤,在这个目的中辅助存储器也是可利用的。然而,如果访问对应一个字符串(定义事件类型或事件类型ID)的链接在主存储器中没有发现其副本,那么就计算一个散列值屏在辅助存储器中更新一个计数。频繁选择的字符串依照频率计数方法的基本原理逐步升级到主存储器。此后,由于其可以照此从主存储器中被找到,也可在自动完成步骤期间直接使用该字符串。这种实现方法至少在平均数与简单的但明显不是最优的基于字母顺序的方案比较上产生了更好的结果。
作为另一个选项,频率计数方法可以仅仅用于组织链接而不是用于实际定义它们。如果用户例如更喜欢在浏览器中手动创建链接(书签),正如在此之前所提出的那样仍然可以计算链接访问的频率。手动定义的链接根据频率计数排序接着被显示给用户。也可结合用户可定义的和自动链接生成,其对整个过程提供更多的灵活性;可以平等地对待源于任一个过程的链接并在单独的排序列表中呈现,或者手动生成的链接有优于自动产生的链接的优先权,或反之亦然。手动和自动生成的链接数据可以存储在同一或各自的存储器中。实际上,当仅有手动生成的链接时,辅助存储器可能会没有用处,因为用户可能想直接从开始(链接定义之后,该定义可能出现在第一次访问时)访问并看到所存储的链接,反之第一次访问主-辅助存储器中的某个页面/链接解决方案典型地仅在辅助存储器中生成可由缩短的ID或散列码定址散列码标地址的计数值。
最后,当创建并安排经常涉及各种各样服务等的建议时可以考虑语境信息。语境自适应可通过使用例如一天中的某个时刻、本周的某一天、位置(例如小区ID)、连接类型/能力、所选择的简表等作为控制因素而发生。例如,可以仅仅通过筛选出某个语境之下的某个链接为存储链接或者为链接的可视化定义语境依赖的一般的或网站/页面特定的规则。例如,如果“工作”简表是活动的,那么将不显示业余爱好相关的链接等。可以构建简表特定的频率计数存储器,或者附加的加权术语可以和标准的存储器元素数据一起存储以指示相关不同语境的元素的重要性。当向用户形象化显示建议列表时,如果事件类型要显示给用户或者加权计数改变了事件在可视的建议列表中的位置,那么除了事件类型的实际计数之外可以定义当前语境和相应的加权术语。一个选项是将语境信息直接应用于频率计数过程。在某个语境中需要计数的类型的一个事件可能产生比在其他语境中产生的更大增长(或不变或甚至减少)的对应计数。总之,根据更好地采纳各种各样的用户需求可灵活地实现本发明的基本频率计数方法。
参考图8,用于装置的基本组成的一个选项,实质上是类似移动终端的个人通信装置,有能力计算和排序描述了的事件频率。被分为一个或多个物理存储器片的内存812包括主存储器804和辅助存储器806,以及为了所建议的方法的计算机程序/应用形式的指令816。为根据所存储的指令816和数据804、806实际执行本方法所需的处理单元802。典型地需要显示屏814和用户接口820以便为用户提供必要的装置控制和数据可视化方法。收发器818处理经由空中接口808的数据传输。包括例如传感器和放大器的用于连接诸如所述装置的语音和音乐等的声音信号所需的音频部分810。
本发明的范围可在下面的独立权利要求书中找到。然而,根据当前的情况所利用的装置、事件类型、存储器结构等可以有很大的变化,但将仍然会聚到本发明的基本思想上。例如,很显然,在实践中所建议的方法可以在几乎任一种先进的电子装置中实现,这种装置实质上包括计算机,类似PDA或桌面/便携式PC,包括用于存储和处理数据的方法。此外,主和辅助存储器可以以多种形式构建,只要是主存储器保存详细的事件数据而辅助存储器作为一个较为不详细的中间存储器工作。两个存储器甚至可以部分地结合,因为,鉴于仅仅用于主存储器或仅仅用于辅助存储器的事件标识数据可以放在一起,因而用于两个存储器的频率数据能够存储在某个存储位置中。然而,在任何情况下,在频率数据和可用事件标识数据之间必须有联接以便在概念层次上至少有两个存储器,主存储器可能有分布的事件类型标识和频率数据信息单元,而辅助存储器至少有频率数据,仍然以细节的不同层次共存。因此,本发明不严格限制到上面所描述的实施例中。
参考文献:
[1]Brown,B.&Sellen,A.(2001),“Exploring Users’Experiences of the Web”.First Monday(http://www.firstmonday.org/issues/issue6_9/brown/index.html)
[2]Cockburn,A.&Mckenzie,B.(2000),“What Do Web Users Do?An EmpiricalAnalysis of Web Use”,Int.J.Human-Computer Studies(http://www.cosc.canterbury.ac.nz/~andy/papers/ijhcsAnalysis.pdf)
[3]Ramsay,M.&Nielsen,J.(2000),“WAP Usability”.Field study report

Claims (52)

1.一种由有能力处理和存储数据的电子装置执行的用于计算事件频率的方法,所述频率信息存储在主和辅助存储器中,所述方法包括步骤:
-定义至少一个事件类型,其频率将被计算(302);
-当事件发生时检测将被计算的所述类型的事件(306);
-检验所述事件类型是否已经包含在所述主存储器中(310);
-如果包含,为所述主存储器中的所述事件类型增加计数(312);
-否则,为所述辅助存储器中的事件类型更新计数(314)。
2.根据权利要求1的方法,其中所述更新至少包括下面的动作之一:创建所述事件类型相关的存储元素,为所述事件类型初始化计数值,增加计数。
3.根据权利要求1-2的方法,还包括如果所述事件类型的计数与所述主存储器中的事件类型的计数相比满足了预定条件,则将所述辅助存储器中的事件类型移动到所述主存储器中的步骤(316)。
4.根据权利要求3的方法,其中满足所述条件需要所述辅助存储器中的事件类型的计数等于或高于所述主存储器中的事件类型的计数。
5.根据权利要求3-4的方法,还包括将所述主存储器中的事件类型移动到所述辅助存储器中的步骤。
6.根据权利要求3-4的方法,其中所述主存储器中的所述事件类型具有所述存储器的最低或最高计数。
7.根据权利要求3-4的方法,还包括排序所述主存储器的步骤。
8.根据权利要求1-4的方法,还包括排序存储器的步骤,所述计数被增加到所述存储器。
9.根据权利要求1-8的方法,其中所述事件的所述频率信息基本上是作为事件类型标识符/频率计数对而被存储的。
10.根据权利要求9的方法,其中事件类型标识符基本上是散列函数的输出。
11.根据权利要求1-9的方法,其中其中所述辅助存储器由这样散列函数的输出标引的,即所述散列函数使用事件类型或者事件类型的派生物作为输入的。
12.根据权利要求1-11的方法,其中无论何时发生了预定义的动作触发了加权,则事件类型的所述频率计数被加权了一个加权因子。
13.根据权利要求1-12的方法,其中其频率将被计算的所述事件基本上至少是下面中的一种:因特网页面访问、因特网网站访问、电话菜单访问、文件访问、单词识别事件、语音命令事件、文本自动完成事件、或手写字符识别事件。
14.根据权利要求13的方法,其中所述因特网页面基本上是WWW(万维网)或WAP(无线应用协议)页面。
15.根据权利要求13-14的方法,其中排序的事件类型为因特网浏览器形成建议列表。
16.根据权利要求1-15的方法,其中所述频率信息基本上是用户帐户特定的。
17.根据权利要求1-16的方法,其中所述频率信息至少部分地存储在便携式媒介上。
18.根据权利要求17的方法,其中所述便携式媒介基本上是存储卡。
19.根据权利要求18的方法,其中所述存储卡基本上是SIM(用户标识模块)卡。
20.一种计算机程序,当所述程序在计算机上运行时包括适合执行权利要求1-19的方法步骤的代码单元(716)。
21.一种用于浏览器中的建议引擎的权利要求20的计算机程序,其中存储在所述主和辅助存储器中的事件数据至少部分地与浏览器中所访问的目的地地址相关。
22.根据权利要求21的计算机程序,其中所述访问的目的地地址与因特网网站及其的页面相关。
23.根据权利要求21-22的计算机程序,其中所述主或辅助存储器中的事件类型特定元素包括至少下面的信息单元的一个:事件类型标识符、网站名称、页面名称、网站URL(统一资源定位)、网页URL。
24.根据权利要求22-23的计算机程序,其中由所述存储的事件数据构建的建议基本上是网站级的建议。
25.根据权利要求22-23的计算机程序,其中由所述存储的事件数据构建的建议基本上是网页级的建议。
26.根据权利要求21-23的计算机程序,其中建议以至少包含两级的分级结构的形式显示给用户。
27.根据权利要求26的计算机程序,其中所述级别包括用于网站的级别和用于相应页面的级别。
28.根据权利要求21-26的计算机程序,其中建议适合用户语境。
29.根据权利要求21-27的计算机程序,其中自至少数据类型的先前访问过去的时间影响了所述事件类型在所述存储器中或在所显示的建议列表中的位置。
30.根据权利要求22的计算机程序,其中建议作为网页及其的子页面的分级结构而被显示给用户。
31.根据权利要求30的计算机程序,其中显示给所述用户的子页面的顺序受时间流逝的影响,其中所述时间至少从所述子页面的一个以前的访问算起。
32.根据权利要求20-22的计算机程序,其中如果在会话期间事件类型访问次数多于一次,那么使用独立于访问事件类型的次数的固定值调整某个事件类型的计数。
33.根据权利要求22的计算机程序,其中网页中的链接根据频率计数排序而被显示。
34.根据权利要求20的计算机程序,用于分类文本自动完成引擎中的字符串,其中为已完成的字符串找到的选项属于一组事件类型,所述事件类型的频率被计算,并且由所述频率计数排序所述选项。
35.根据权利要求20的计算机程序,用于分类浏览器中用户定义的链接,其中所述链接属于一组事件类型,所述事件类型的频率被计算,并且通过所述频率计数排序所述链接。
36.根据权利要求20的计算机程序,其中所述计算机基本上是PC(个人计算机),PDA(个人数据助理)或移动终端。
37.根据权利要求29或31的计算机程序,其中所述从至少一个以前访问起过去的时间作为会话次数或日历时间而被测量。
38.一种传送权利要求20的计算机可执行程序的传送媒介。
39.一种通信网络中可操作的(708,718)个人通信装置,包括用于处理指令(716)和存储数据的处理单元(702)和存储器单元(712);所述存储器单元(712)包括用于存储频率信息的主存储器(704)和辅助存储器(706);所述个人通信装置被设置成定义至少一个事件类型,其频率将被计算;当事件发生时检测将被计算类型的事件;检验所述事件类型是否已经包含在所述主存储器中(704);如果包含,则为所述主存储器中的事件类型增加计数(704),否则,为所述辅助存储器中的事件类型更新计数(706)。
40.根据权利要求39的个人通信装置,其中所述更新至少包括下面的动作之一:创建所述事件类型相关的存储元素,为所述事件类型初始化计数值,增加计数。
41.根据权利要求39-40的个人通信装置,还被设置成在所述事件类型的计数与所述主存储器(704)中的事件类型的计数相比满足了预定条件时,将所述辅助存储器(706)中的事件类型移动到所述主存储器(704)中。
42.根据权利要求39-41的个人通信装置,还被设置成将所述主存储器(704)中的事件类型移动到所述辅助存储器(706)中。
43.根据权利要求39的个人通信装置,其中所述频率信息存储在SIM卡上。
44.根据权利要求39的个人通信装置,其中所述频率信息特定于用户帐户。
45.根据权利要求39-44的个人通信装置,被设置成在浏览器中形成建议引擎,其中存储在所述主和辅助存储器中的事件数据至少部分地与浏览器中所访问的目的地地址相关。
46.根据权利要求45的个人通信装置,其中所述访问的目的地地址与因特网网站及其的网页相关。
47.根据权利要求44-46的个人通信装置,其中所述主或辅助存储器中的事件类型特定元素与至少下面的信息单元的一个相关:事件类型标识符、网站名称、页面名称、网站URL(统一资源定位)、网页URL。
48.根据权利要求46的个人通信装置,其中网页中的链接根据频率计数排序而被显示。
49.根据权利要求39的个人通信装置,被设置成分类文本自动完成引擎中的字符串,其中为已完成的字符串找到的选项属于一组事件类型,所述事件类型的频率被计算,并且通过所述频率计数排序所述选项。
50.根据权利要求49的个人通信装置,其中根据所述自动完成引擎分类的字符串与因特网网站或页面相关。
51.根据权利要求39的个人通信装置,被设置成分类浏览器中用户定义的链接,其中所述链接属于一组事件类型,所述事件类型的频率被计算,并且由频率计数排序所述链接。
52.根据权利要求39的个人通信装置,所述个人通信装置是GSM(全球移动通信系统)或UMTS(通用移动电信系统)终端。
CN03826336XA 2003-03-07 2003-03-07 用于频率计数的方法和装置 Expired - Fee Related CN1764916B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/FI2003/000177 WO2004079597A1 (en) 2003-03-07 2003-03-07 A method and a device for frequency counting

Publications (2)

Publication Number Publication Date
CN1764916A true CN1764916A (zh) 2006-04-26
CN1764916B CN1764916B (zh) 2010-08-18

Family

ID=32947023

Family Applications (1)

Application Number Title Priority Date Filing Date
CN03826336XA Expired - Fee Related CN1764916B (zh) 2003-03-07 2003-03-07 用于频率计数的方法和装置

Country Status (6)

Country Link
US (1) US9280607B2 (zh)
EP (1) EP1627335A1 (zh)
CN (1) CN1764916B (zh)
AU (1) AU2003209790A1 (zh)
HK (1) HK1089253A1 (zh)
WO (1) WO2004079597A1 (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101677338A (zh) * 2008-09-18 2010-03-24 深圳富泰宏精密工业有限公司 快捷列表排序系统及方法
CN101923577A (zh) * 2010-09-02 2010-12-22 北京开心人信息技术有限公司 一种可扩展的计数方法与系统
CN102368245A (zh) * 2010-09-14 2012-03-07 微软公司 相关网站的确定和显示
CN102651008A (zh) * 2011-02-28 2012-08-29 国际商业机器公司 在关系数据库中组织数据记录的方法和设备
CN102841736A (zh) * 2011-05-03 2012-12-26 宏达国际电子股份有限公司 手持式电子装置及其网页书签存取方法
WO2013166998A1 (zh) * 2012-11-16 2013-11-14 中兴通讯股份有限公司 浏览器书签的管理方法及装置
CN103632194A (zh) * 2013-11-30 2014-03-12 林淑琴 一种网站访客流量计数器
CN109145118A (zh) * 2018-09-06 2019-01-04 北京京东尚科信息技术有限公司 信息管理方法和装置
CN109213413A (zh) * 2017-07-07 2019-01-15 阿里巴巴集团控股有限公司 一种推荐方法、装置、设备和存储介质

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040217991A1 (en) * 2003-04-30 2004-11-04 International Business Machines Corporation Method and apparatus for dynamic sorting and displaying of listing data composition and automating the activation event
US20050015728A1 (en) * 2003-07-17 2005-01-20 International Business Machines Corporation Method, system, and program product for customizing a user interface
US7657423B1 (en) 2003-10-31 2010-02-02 Google Inc. Automatic completion of fragments of text
US7418455B2 (en) * 2003-11-26 2008-08-26 International Business Machines Corporation System and method for indexing weighted-sequences in large databases
US8954420B1 (en) 2003-12-31 2015-02-10 Google Inc. Methods and systems for improving a search ranking using article information
US20050149498A1 (en) * 2003-12-31 2005-07-07 Stephen Lawrence Methods and systems for improving a search ranking using article information
US8386728B1 (en) 2004-03-31 2013-02-26 Google Inc. Methods and systems for prioritizing a crawl
US7333976B1 (en) * 2004-03-31 2008-02-19 Google Inc. Methods and systems for processing contact information
US8161053B1 (en) 2004-03-31 2012-04-17 Google Inc. Methods and systems for eliminating duplicate events
US8099407B2 (en) 2004-03-31 2012-01-17 Google Inc. Methods and systems for processing media files
US8631076B1 (en) 2004-03-31 2014-01-14 Google Inc. Methods and systems for associating instant messenger events
US8346777B1 (en) 2004-03-31 2013-01-01 Google Inc. Systems and methods for selectively storing event data
JP2007109114A (ja) * 2005-10-17 2007-04-26 Matsushita Electric Ind Co Ltd 機能操作画面表示制御方法
US7792761B2 (en) * 2005-11-01 2010-09-07 International Business Machines Corporation System for evaluating relevance between persons
US10324899B2 (en) 2005-11-07 2019-06-18 Nokia Technologies Oy Methods for characterizing content item groups
JP2007316934A (ja) * 2006-05-25 2007-12-06 Fujitsu Ltd 情報処理装置、情報処理方法及びプログラム
US8015571B2 (en) * 2007-03-16 2011-09-06 Google Inc. Registering an event
US7644075B2 (en) * 2007-06-01 2010-01-05 Microsoft Corporation Keyword usage score based on frequency impulse and frequency weight
US9251137B2 (en) * 2007-06-21 2016-02-02 International Business Machines Corporation Method of text type-ahead
US7680978B1 (en) * 2007-09-05 2010-03-16 Juniper Networks, Inc. Reducing content addressable memory (CAM) power consumption counters
US8316035B2 (en) 2008-01-16 2012-11-20 International Business Machines Corporation Systems and arrangements of text type-ahead
US8359532B2 (en) * 2008-04-28 2013-01-22 International Business Machines Corporation Text type-ahead
US20090300495A1 (en) * 2008-06-02 2009-12-03 Novell, Inc. System and method for an adaptive wizard utility for graphical user interfaces
US11048765B1 (en) 2008-06-25 2021-06-29 Richard Paiz Search engine optimizer
CN101770339B (zh) * 2009-01-05 2012-12-19 深圳富泰宏精密工业有限公司 使用者行为追踪及记录系统与方法
US9292612B2 (en) * 2009-04-22 2016-03-22 Verisign, Inc. Internet profile service
US8521908B2 (en) * 2009-04-07 2013-08-27 Verisign, Inc. Existent domain name DNS traffic capture and analysis
US8290906B1 (en) * 2009-09-28 2012-10-16 Decho Corporation Intelligent resource synchronization
US7716205B1 (en) 2009-10-29 2010-05-11 Wowd, Inc. System for user driven ranking of web pages
US20110154193A1 (en) * 2009-12-21 2011-06-23 Nokia Corporation Method and Apparatus for Text Input
JP5803902B2 (ja) * 2010-03-12 2015-11-04 日本電気株式会社 関連情報出力装置、関連情報出力方法および関連情報出力プログラム
US20110251964A1 (en) * 2010-04-13 2011-10-13 Jayavel Shanmugasundaram Pricing Guaranteed Delivery Contracts in Online Display
US11379473B1 (en) * 2010-04-21 2022-07-05 Richard Paiz Site rank codex search patterns
US11423018B1 (en) * 2010-04-21 2022-08-23 Richard Paiz Multivariate analysis replica intelligent ambience evolving system
JP2012018487A (ja) * 2010-07-06 2012-01-26 Fujitsu Ltd ノード決定プログラム、ノード決定装置およびノード決定方法
US20120310743A1 (en) * 2011-01-04 2012-12-06 Rajul Johri Using mobile devices to make secure and reliable payments for store or online purchases
US8468164B1 (en) * 2011-03-09 2013-06-18 Amazon Technologies, Inc. Personalized recommendations based on related users
US8725779B1 (en) * 2011-05-06 2014-05-13 Aggregate Knowledge, Inc. System and method for counting and storing events as scalar quantities in skewed counting environments
US9141613B2 (en) * 2012-10-30 2015-09-22 Appsense Limited Systems and methods for determining an address for a private function
JP6113463B2 (ja) * 2012-11-15 2017-04-12 任天堂株式会社 情報処理プログラム、リンク管理装置、表示システム及び表示方法
US10649607B2 (en) * 2012-12-28 2020-05-12 Facebook, Inc. Re-ranking story content
US11741090B1 (en) 2013-02-26 2023-08-29 Richard Paiz Site rank codex search patterns
US11809506B1 (en) * 2013-02-26 2023-11-07 Richard Paiz Multivariant analyzing replicating intelligent ambience evolving system
US10846292B2 (en) * 2013-03-14 2020-11-24 Vmware, Inc. Event based object ranking in a dynamic system
KR101893957B1 (ko) 2013-08-19 2018-08-31 삼성에스디아이 주식회사 배터리 팩, 배터리 팩을 포함하는 장치, 및 배터리 팩의 관리 방법
WO2015041648A1 (en) * 2013-09-19 2015-03-26 Hewlett-Packard Development Company, L.P. Application menu modification recommendations
US9805099B2 (en) * 2014-10-30 2017-10-31 The Johns Hopkins University Apparatus and method for efficient identification of code similarity
US9906542B2 (en) * 2015-03-30 2018-02-27 Microsoft Technology Licensing, Llc Testing frequency control using a volatility score
US10769229B2 (en) * 2016-04-14 2020-09-08 Microsoft Technology Licensing, Llc Separation of work and personal content
US10997120B2 (en) * 2017-03-16 2021-05-04 Cisco Technology, Inc. Systems and methods for device visiting frequency estimation
US10467433B2 (en) 2017-03-17 2019-11-05 Mediasift Limited Event processing system
US10645171B1 (en) * 2019-06-10 2020-05-05 Csg Systems, Inc. System and method for network and customer device provisioning

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2043493C (en) * 1990-10-05 1997-04-01 Ricky C. Hetherington Hierarchical integrated circuit cache memory
JPH09265429A (ja) * 1996-01-23 1997-10-07 Fujitsu Ltd データ配信装置、記憶装置とその制御方法およびデータ転送システム
US5935207A (en) * 1996-06-03 1999-08-10 Webtv Networks, Inc. Method and apparatus for providing remote site administrators with user hits on mirrored web sites
US6125392A (en) * 1996-10-11 2000-09-26 Intel Corporation Method and apparatus for high speed event log data compression within a non-volatile storage area
ATE504880T1 (de) 1999-11-03 2011-04-15 Sublinks Aps Methode, system und computerlesbares medium zum verwalten von verbindungen zwischen ressourcen
US6564213B1 (en) * 2000-04-18 2003-05-13 Amazon.Com, Inc. Search query autocompletion
GB2373679B (en) * 2001-03-22 2004-04-07 Ericsson Telefon Ab L M Mobile communications device
US6754854B2 (en) * 2001-06-04 2004-06-22 Motorola, Inc. System and method for event monitoring and error detection

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101677338A (zh) * 2008-09-18 2010-03-24 深圳富泰宏精密工业有限公司 快捷列表排序系统及方法
CN101677338B (zh) * 2008-09-18 2013-06-05 深圳富泰宏精密工业有限公司 快捷列表排序系统及方法
CN101923577B (zh) * 2010-09-02 2013-03-20 北京开心人信息技术有限公司 一种可扩展的计数方法与系统
CN101923577A (zh) * 2010-09-02 2010-12-22 北京开心人信息技术有限公司 一种可扩展的计数方法与系统
US8893042B2 (en) 2010-09-14 2014-11-18 Microsoft Corporation Determination and display of relevant websites
CN102368245A (zh) * 2010-09-14 2012-03-07 微软公司 相关网站的确定和显示
CN102651008A (zh) * 2011-02-28 2012-08-29 国际商业机器公司 在关系数据库中组织数据记录的方法和设备
US8972403B2 (en) 2011-02-28 2015-03-03 International Business Machines Corporation Method of and apparatus for organizing data records in a relational database
CN102651008B (zh) * 2011-02-28 2015-06-17 国际商业机器公司 在关系数据库中组织数据记录的方法和设备
CN102841736A (zh) * 2011-05-03 2012-12-26 宏达国际电子股份有限公司 手持式电子装置及其网页书签存取方法
WO2013166998A1 (zh) * 2012-11-16 2013-11-14 中兴通讯股份有限公司 浏览器书签的管理方法及装置
CN103632194A (zh) * 2013-11-30 2014-03-12 林淑琴 一种网站访客流量计数器
CN109213413A (zh) * 2017-07-07 2019-01-15 阿里巴巴集团控股有限公司 一种推荐方法、装置、设备和存储介质
CN109145118A (zh) * 2018-09-06 2019-01-04 北京京东尚科信息技术有限公司 信息管理方法和装置

Also Published As

Publication number Publication date
US20070033275A1 (en) 2007-02-08
WO2004079597A1 (en) 2004-09-16
US9280607B2 (en) 2016-03-08
HK1089253A1 (en) 2006-11-24
CN1764916B (zh) 2010-08-18
EP1627335A1 (en) 2006-02-22
AU2003209790A1 (en) 2004-09-28

Similar Documents

Publication Publication Date Title
CN1764916B (zh) 用于频率计数的方法和装置
US9971842B2 (en) Computerized systems and methods for generating a dynamic web page based on retrieved content
US8521717B2 (en) Propagating information among web pages
US9613088B2 (en) Systems and methods for query optimization
CN102622450B (zh) 用户的浏览器历史的相关性排序
US8229911B2 (en) Network search engine utilizing client browser activity information
US8656264B2 (en) Dynamic aggregation and display of contextually relevant content
KR101214688B1 (ko) 콘텐츠의 집계, 배포, 공유, 및 업데이트의 사회적 측면들
US8176029B2 (en) Composite display method and system for search engine of same resource information based on degree of attention
JP5661104B2 (ja) 検索エンジンインデクシング及びインデックスを使用する検索のための方法とシステム
JP5147947B2 (ja) クエリ別検索コレクション生成方法およびシステム
CN107103032B (zh) 一种分布式环境下避免全局排序的海量数据分页查询方法
US20090006388A1 (en) Search result ranking
CN1403964A (zh) 书签管理系统和书签管理方法
CN101079063A (zh) 一种基于场景信息推送广告的方法、系统及设备
CN1601532A (zh) 根据结构相关信息排序文档的改进的系统和方法
US9171045B2 (en) Recommending queries according to mapping of query communities
CN102193999A (zh) 一种对搜索结果进行排序的方法及设备
CN104423621A (zh) 拼音字符串处理方法和装置
CN102955810B (zh) 一种网页分类方法和设备
CN102214207A (zh) 一种用于对信息实体中的属性集合进行排序的方法与设备
US20080189334A1 (en) Method of Global Popularity based Prioritization in Information Engine with Consumer ==Author and Dynamic Web models for global, multimedia, and mobile Internet
US20200394194A1 (en) Multi-vertical entity-based search system
CN101114293A (zh) 一种根据读者关注度而变化信息显示的方法
CN1524238A (zh) 用于定义和呈现复合网页的系统及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1089253

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1089253

Country of ref document: HK

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160125

Address after: Espoo, Finland

Patentee after: Technology Co., Ltd. of Nokia

Address before: Espoo, Finland

Patentee before: Nokia Oyj

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100818

Termination date: 20170307

CF01 Termination of patent right due to non-payment of annual fee