首页> 中国专利> 基于双哈希结构二维动态联系人查询列表查询方法及系统

基于双哈希结构二维动态联系人查询列表查询方法及系统

摘要

本发明提供一种基于双哈希结构二维动态联系人查询列表查询方法,包括:构建联系人查询哈希列表;联系人查询哈希列表包括联系人查询无重名哈希列表和重名哈希列表;判断名称列是否有重名。若无,则查询无重名哈希列表;若有,则查询重名哈希列表;在无重名哈希列表中查询所需二维表的数据内容,根据所需二维表的字段和记录的名称确定二维数组的列标和行标,依据列标行标查询数据内容;在重名哈希列表中查询所需二维表的数据内容,使用索引生成新的联系人查询无重名哈希列表,根据所需二维表的字段和记录的名称确定二维数组的列标和行表,依据列标行标查询数据内容。本发明提高联系人查询的存取效率,采用哈希定位二维数组行列标加快了检索的速度。

著录项

  • 公开/公告号CN103544305A

    专利类型发明专利

  • 公开/公告日2014-01-29

    原文格式PDF

  • 申请/专利权人 上海斐讯数据通信技术有限公司;

    申请/专利号CN201310534928.3

  • 发明设计人 王俊;张立宏;刘云峰;

    申请日2013-11-01

  • 分类号G06F17/30(20060101);

  • 代理机构31219 上海光华专利事务所;

  • 代理人余明伟

  • 地址 201616 上海市松江区广富林路4855弄20号、90号

  • 入库时间 2024-02-19 21:57:24

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-12-19

    授权

    授权

  • 2014-12-10

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20131101

    实质审查的生效

  • 2014-01-29

    公开

    公开

说明书

技术领域

本发明属于移动通信领域,涉及一种动态联系人查询列表查询方法及系统,特别是涉及一种基于双哈希结构二维动态联系人查询列表查询方法及系统。

背景技术

电话薄是例如手机等移动通信设备的基本功能,这种功能每天都会被用户频繁使用,其作用存储联系人信息的数据库,目标联系人的查询是数据库管理系统的基础,它负责存储系统中各种数据,且提供存取数据的接口等功能。目前主流的关系数据库商业产品如oracle,都支持此项功能。但是由于手机系统在时间和空间上的资源有限,不可能将需要消耗大量资源和空间的大型业务数据库系统,例如sybase、oracle等部署在手机设备上。而其他手机实时数据库,如Berkeley DB等,需要对磁盘进行操作,影响系统实时性。

安卓系统中的SQLite是一种轻型数据库,它虽然实现了数据库系统中包括联系人查询的大部分特征,如支持视图、触发器、事务管理等,但这些功能对于某些小型手机设备根本不需要,增加了对有限资源的占用。

而其他手机实时数据库,如Berkeley DB等,需要对磁盘进行操作,影响系统实时性。以Android SQLite为例,搜索界面是一个Auto-Complete-Text-View(自动完成文本视图),显示自动完成建议当用户键入。建议列表显示在一个下拉菜单,用户可以从中选择一项,以完成输入,他的数据是一个Suggestions-Adapter,每次输入内容后,更新Auto-Complete-TextView中的mFilter,然后在contacts中的peopleLookup表中查找,更新adapter,然后将结果显示给用户,联系人中查询的uri是”content://contacts/search_suggest_query/输入的字符“,首先在people-Lookup表中查找到联系人的ID,然后到人名、电话、联系方式、公司表中查找对应联系人的信息。Android SQLite虽然实现了数据库系统中包括联系人查询的大部分特征,如支持视图、触发器、事务管理等,但这些功能对于某些小型手机设备根本不需要,增加了对有限资源的占用。因此,需要一种在移动终端环境下能够提高数据存取速度,提高整个系统性能的查询方法。

发明内容

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于双哈希结构二维动态联系人查询列表查询方法及系统,用于解决现有技术中移动终端中的数据库中联系查询功能占用了大量有限资源而使联系人查询的数据检索速度大大降低的问题。

为实现上述目的及其他相关目的,本发明提供一种基于双哈希结构二维动态联系人查询列表查询方法,所述方法包括以下步骤:构建联系人查询哈希列表;所述联系人查询哈希列表包括联系人查询无重名哈希列表和重名哈希列表;判断所建立的联系人查询数据库哈希列表中所有二维表的名称列是否有重名,若无重名,则执行查询联系人查询无重名哈希列表的步骤;若有重名,则执行查询联系人查询重名哈希列表的步骤;在联系人查询无重名哈希列表中查询所需二维表的数据内容,根据所需二维表的字段和记录的名称确定二维数组的列标和行标,依据二维数组的列标行标查询所述二维表的数据内容;在联系人查询重名哈希列表中查询所需二维表的数据内容,使用索引重新生成新的联系人查询无重名哈希列表,根据所需二维表的字段和记录的名称确定二维数组的列标和行表,依据二维数组的列标行标查询所述二维表的数据内容。

优选地,基于双哈希结构二维动态联系人查询列表查询方法还包括确定所建立的联系人查询哈希列表中所有二维表的位置及计算所建立的联系人查询哈希列表中所有二维表需占用的空间大小。

优选地,在联系人查询无重名哈希列表中查询的步骤还包括:根据所述二维表的名称,检索所述二维表的存储位置;根据所述二维表中字段的名称,计算字段的关键码值,检索该字段,根据该字段的字段号确定所述数据内容二维数组的列标;根据所述二维表中记录的名称,计算记录的关键码值,检索该记录,根据该记录的记录号确定所述数据内容二维数组的行标;查询所述数据内容的确切位置。

优选地,在联系人查询重名哈希列表中查询的步骤还包括:使用索引重新生成新的联系人查询无重名哈希列表;根据新生成的联系人查询无重名哈希列表中二维表的名称检索所述二维表的存储位置;根据所述二维表中字段的名称,计算字段的关键码值,检索该字段,根据该字段的字段号确定数据内容二维数组的列标;根据所述二维表中记录的名称,计算记录的关键码值,检索该记录,根据该记录的字段号确定数据内容二维数组的行标。查询所述数据内容的确切位置。

优选地,所述字段的字段号和记录的记录号属于字段属性和记录属性。

优选地,所述二维表包括多个记录、字段、记录属性、字段属性、及数据内容。

本发明提供一种基于双哈希结构二维动态联系人查询列表查询系统,包括:列表生成模块、监控模块、第一查询模块、及第二查询模块;列表生成模块,用于构建联系人查询哈希列表;所述联系人查询哈希列表包括联系人查询重名哈希列表和联系人查询无重名哈希列表;监控模块,用于判断所建立的联系人查询哈希列表中二维表的名称列是否有重名;若无重名,则调用所述第一查询模块;若有重名,则调用所述第二查询模块;与所述监控模块连接的第一查询模块,用于根据所需二维表的字段和记录的名称确定二维数组的列标和行标,依据二维数组的列标行标查询所述二维表的数据内容;与所述监控模块连接的第二查询模块,用于使用索引重新生成新的联系人查询无重名哈希列表,根据所需二维表的字段和记录的名称确定二维数组的列标和行表,依据二维数组的列标行标查询所述二维表的数据内容。

优选地,所述基于双哈希结构二维动态联系人查询列表查询系统还包括与所述列表生成模块连接的,用于将构建好的联系人查询哈希列表存放在移动终端的缓冲池中的存储模块。

优选地,分别与所述存储模块和所述监控模块连接的,用于计算所构建的联系人查询哈希列表中所有二维表需占用的空间大小的运算模块。

如上所述,本发明所述的基于双哈希结构二维动态联系人查询列表查询方法及系统,具有以下有益效果:

1.使用简单的数据结构和较小的系统代价实现联系人查询的功能。实现简单,系统开销较小。

2.提高了联系人查询的存取效率,采用哈希定位二维数组行列标的方法简单直接,加快了检索的速度。

3.提高了联系人查询的稳定性。此方法采用多个独立的二维表结构存储,实际应用中可根据应用模块的不同区分二维表,每个二维表的操作互不影响。

附图说明

图1显示为本发明的基于双哈希结构二维动态联系人查询列表查询方法流程示意图。

图2显示为本发明的基于双哈希结构二维动态联系人查询列表查询方法在联系人查询无重名哈希列表中查询流程示意图。

图3显示为本发明的基于双哈希结构二维动态联系人查询列表查询方法在联系人查询重名哈希列表中查询流程示意图。

图4显示为本发明的基于双哈希结构二维动态联系人查询列表查询系统结构示意图。

元件标号说明

1      列表生成模块

2      存储模块

3      运算模块

4      监控模块

5      第一查询模块

6      第二查询模块

S1~S5 步骤

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。

请参阅附图。需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

下面结合实施例和附图对本发明进行详细说明。

数据联系人管理和查询的实现方式有很多种,但是实质上是灵活应用各种数据结构。本发明的主要特点就是:针对任意一个二维表,每列和每行都会记录自己的列号和行号,而在二维表中实际的数据部分采用了二维数组方式,因此,行号和烈号可以表示为该二维数组的行和列的下标。

实施例一

本实施例提供一种基于双哈希结构二维动态联系人查询列表查询方法,所述基于双哈希结构二维动态联系人查询列表查询方法是在移动终端环境下进行的,执行该方法的移动终端包括手机、PDA等。请参阅图1,显示为基于双哈希结构的二维动态联系人查询方法的流程,包括:

S1,构建联系人查询哈希列表,将构建好的联系人查询哈希列表存放在移动终端缓冲池中;所述联系人查询哈希列表由多个二维表组成,而多个二维表以联系人名称顺序存储。每个二维表由多个记录、字段、记录属性、字段属性、及数据内容组成。每个二维表中的记录和字段采用哈希表方式存储,每个二维表中的数据内容采用二维数组方式存储,其中两个数组下标分别代表记录号和字段号。联系人查询数据库的属性包括联系人查询的名称、联系人查询数据库的缓存大小等。二维表属性包括二维表的名称、二维表的类型、数据内容的最大长度、记录及字段的最大数目等。记录属性包括记录名称和记录号。字段属性包括字段名称、字段号、数据类型、是否存盘。由于二维表之间大小不同,所以需要二维表数据量的大小选择不同分布范围的哈希函数,在本实施例中二维表的类型属性定义为双哈希二维表的大小。所述联系人查询哈希列表包括,两种列表,一种为联系人查询重名哈希列表,另一种为联系人查询无重名哈希列表。

S2,确定所建立的联系人查询哈希列表中所有二维表的位置及计算所建立的联系人查询哈希列表中所有二维表需占用的空间大小;

S3,判断所建立的联系人查询哈希列表中二维表的名称列是否有重名。若无重名,则执行查询联系人无重名哈希列表,即执行步骤S4;若有重名,则执行联系人查询重名哈希列表,即执行步骤S5;

S4,在所建立的联系人查询无重名哈希列表中查询所需二维表的数据内容;具体联系人查询无重名列表的流程,请参阅图2,显示为在联系人查询无重名列表中查询流程,包括:

S41,根据所建立的联系人查询无重名哈希列表中二维表的名称检索所述二维表的存储位置;

S42,根据所述二维表中字段的名称,计算该字段的关键码值,检索出该字段,根据该字段的字段属性中的字段号确定所述数据内容二维数组的列标;

S43,根据所述二维表中记录的名称,计算该记录的关键码值,检索出该记录,根据该记录的记录属性中的记录号确定所述数据内容二维数组的行标;

S44,根据所述步骤S42和S43确定的二维数组列标和行标,查询所述二维表的数据内容的确切位置。

例如,现有联系人查询数据库信息表1如下:

表1

NamePhoneworkAddressEmailpafic139CTOChina11jhum138CEOCann22maya130TesterAKd33

所述基于双哈希结构二维动态联系人查询列表查询方法实现如下:

1.将所有字段信息“姓名”、“电话”、“职位”“通讯地址”“Email”等按照hash线性方式存储。每个字段记录下自己的行号。

2.将所有记录信息“pafic”、“jhum”、“maya”按照hash表方式存储。每条记录存下自己的列号。

建立二维数组存储实际数据内容。查询的时候,

比如需要查找pafic的职位。步骤如下:

1.根据字段名称“职位”找到该字段的列号3;

2.根据“pafic”找到该记录的行号1;

3.根据3和1直接在二维数组中读取内容,即CTO。

S5,在所建立的联系人查询重名哈希列表中查询所需二维表的数据内容;具体联系人查询重名列表的流程,请参阅图3,显示为在联系人查询重名哈希列表中查询流程,包括:

S51,使用索引使联系人查询重名哈希列表生成新的联系人查询无重名哈希列表,根据所新生成的联系人查询无重名哈希列表中二维表的名称检索所述二维表的存储位置;

S52,根据所述二维表中字段的名称,计算该字段的关键码值,检索出该字段,根据该字段的字段属性中的字段号确定所述数据内容二维数组的列标;

S53,根据所述二维表中记录的名称,计算该记录的关键码值,检索出该记录,根据该记录的记录属性中的记录号确定所述数据内容二维数组行标;

S54,根据所述步骤S52和S53确定的二维数组的列标和行标,查询所述二维表的数据内容的确切位置。采用哈希定位二维数组的下标(列标和行标)的方法简单直接,检索速度迅速。

例如,现有联系人查询数据库信息表2如下:

表2

NamePhoneworkAddressEmailpafic139CTOChina11pafic138CEOCann22pafic130TesterAKd33

基于双哈希结构二维动态联系人查询列表查询方法实现如下:

1,使用索引,重新生成联系人查询无重名哈希列表;重新生成的无重名哈希列表表3如下:

表3

NamePhoneworkAddressEmailPafic1139CTOChina11Pafic2138CEOCann22Pafic3130TesterAKd33

1.将所有字段信息“姓名”、“电话”、“职位”“通讯地址”“Email”等按照hash线性方式存储。每个字段记录下自己的行号。

2.将所有记录信息“pafic”、“pafic”、“pafic”按照hash表方式存储。每条记录存下自己的列号。

建立二维数组存储实际数据内容。查询的时候,

比如需要查找pafic2的职位。步骤如下:

1.根据字段名称“职位”找到该字段的列号3;

2.根据“pafic2”找到该记录的行号2;

3.根据3和2直接在二维数组中读取内容,即CEO。

本实施例所述的基于双哈希结构二维动态联系人查询列表查询方法具有以下益处:

1.使用简单的数据结构和较小的系统代价实现联系人查询的功能。实现简单,系统开销较小。

2.提高了联系人查询的存取效率,采用哈希定位二维数组行列标的方法简单直接,加快了检索的速度。

3.提高了联系人查询的稳定性。此方法采用多个独立的二维表结构存储,实际应用中可根据应用模块的不同区分二维表,每个二维表的操作互不影响。

实施例二

本实施例提供一种基于双哈希结构二维动态联系人查询列表查询系统,所述基于双哈希结构二维动态联系人查询列表查询系统是在包括在移动终端中。请参阅图4,显示为基于双哈希结构二维动态联系人查询列表查询系统原理结构,包括:列表生成模块1、存储模块2、运算模块3、监控模块4、第一查询模块5、及第二查询模块6。

列表生成模块1,用于构建联系人查询哈希列表;所述联系人查询哈希列表包括联系人查询重名哈希列表和联系人查询无重名哈希列表。与所述列表生成模块1连接的存储模块2用于将构建好的联系人查询哈希列表存放在移动终端的缓冲池中。与所述存储模块2连接的运算模块3用于计算所构建的联系人查询哈希列表中所有二维表需占用的空间大小。

与所述运算模块3连接的监控模块4用于判断所建立的联系人查询哈希列表中二维表的名称列是否有重名;若无重名,则调用第一查询模块5;若有重名,则调用第二查询模块6。

与所述监控模块4连接的第一查询模块5用于在联系人查询无重名哈希列表中查询所需二维表的数据内容,即根据所需二维表的字段的名称确定二维数组的列标,根据所需二维表的记录的名称确定二维数字的行标,根据已确定的二维数组的列标行标查询所述二维表的数据内容的确切位置。

与所述监控模块4连接的第二查询模块5用于在联系人查询重名哈希列表中查询所需二维表的数据内容,即使用索引重新生成联系人查询无重名哈希列表,接着根据所需二维表的字段的名称确定二维数组的列标,根据所需二维表的记录的名称确定二维数组的行标,根据已确定的二维数组的列标行标查询所述二维表的数据内容的确切位置。采用哈希定位二维数组的下标(列标和行标)的方法简单直接,检索速度迅速。

本发明所述的基于双哈希结构二维动态联系人查询列表查询方法及系统使用了简单的结构数据和较小的系统实现了联系人查询的功能,本发明可以实现起来很容易,并且其提高了联系人查询的存储效率,检索速度迅速,查询稳定。并且根据应用模块的不同区分二维表,每个二维表的操作互不影响。

综上所述,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号