一种搜索用户名的方法及系统的制作方法

文档序号:6365627阅读:176来源:国知局
专利名称:一种搜索用户名的方法及系统的制作方法
技术领域
本发明属于数据处理技术领域,尤其涉及一种搜索用户名的方法及系统。
背景技术
随着科技的迅猛发展,互联网越来越多的出现在人们的生活中。在多种系统中都使用到用户名搜索技术,例如在用户的注册过程中,需要判断用户填写的用户名是否已经被使用;好友的模糊查找;在填写功能表单(发站内信, 赠送鲜花等)时,根据用户的输入情况,自动下拉提示符合条件的用户名列表。用户名搜索分为精确搜索和模糊搜索。其中,模糊搜索进一步分为前匹配、后匹配和模糊匹配三种。例如若数据库中保存有abcd,adef, bda,der四个用户名,那么模糊查找a的话,如果进行前匹配,则只有以a开头的用户名符合要求,结果为abed和adef,如果进行后匹配,则只有以a结尾的用户名符合要求,所以结果是bda,如果进行模糊匹配,则只要包含有字符a的均符合要求,所以结果是abed, adef和bda。目前,主要是通过PHP (英文超级文本预处理语言)加MYSQL (—种小型关系型数据库管理系统)的形式来保存、查找用户名。但是,这种结构只能在用户量较小时满足应用,原因在于当需要进行后匹配模糊搜索时,可以利用MYSQL中的索引功能快速定位到符合条件的记录上,但是,如果需要进行前匹配模糊搜索或者模糊匹配搜索,基于MYSQL的索引原理无法快速的定位至符合条件的记录上,此时需要进行全表检索,在全表检索过程中,数据库处于被锁定的状态,针对数据库的其他请求均无法进行。当用户量较大(如千万级别)时,数据库的记录会达到百万级别,由于全表检索的查询效率较低,导致数据库被锁定的时间较长,严重影响了数据库的日常运营,同时也降低了数据库的服务质量。因此,在搜索用户名的过程中,如何缩短数据库被锁定时间,维护数据库的正常运营并提高其服务质量是本领域技术人员亟待解决的问题。

发明内容
有鉴于此,本发明的目的在于提供一种搜索用户名的方法及系统,在搜索用户名的过程中,可以缩短数据库被锁定时间,维护数据库的正常运营并提高其服务质量。为实现上述目的,本发明提供如下技术方案一种搜索用户名的方法,包括接收包含待搜索用户名以及搜索类型信息的指令;判断关于所述待搜索用户名的搜索是否存在缓存且所述缓存未过期,若是,则获取缓存中的数据并返回,否则,利用所述搜索类型信息判断本次搜索是否为模糊搜索;当本次搜索是模糊搜索时,在内存预存的全部用户名信息中进行检索,获取包含所述待搜索用户名的用户名信息作为搜索结果,返回所述搜索结果;当本次搜索不是模糊搜索时,利用数据库本身的索引在所述数据库预存的全部用户名信息中进行检索,获取包含所述待搜索用户名的用户名信息作为搜索结果,返回所述搜索结果。
优选的,在上述方法中,还包括将所述数据库中的全部用户名信息加载至内存。优选的,在上述方法中,在内存预存的全部用户名信息中进行检索,具体为以所述待搜索用户名为关键字,在所述内存预存的全部的用户名信息中进行遍历。优选的,在上述方法中,在将数据库中的全部用户名信息加载至内存之后,还包括按照用户名对所述内存中的全部用户信息进行排序,并建立索引。优选的,在上述方法中,在内存预存的全部用户名信息中进行检索,包括判断本次搜索是否为后匹配模糊搜索; 当本次搜索是后匹配模糊搜索时,利用所述内存中的索引在内存预存的全部用户名信息中进行直接定位;当本次搜索不是后匹配模糊搜索时,以所述待搜索用户名为关键字,在所述内存预存的全部用户名信息中进行遍历。优选的,在上述方法中,在返回所述搜索结果后,还包括将所述搜索结果存储于缓存中。优选的,利用C语言进行待搜索用户名的模糊搜索。另一方面,本发明还提供了一种搜索用户名的系统,包括信息处理单元,用于将数据库中的全部用户名信息加载至内存;指令接收单元,用于接收包含待搜索用户名以及搜索类型信息的指令;第一判断单元,用于判断关于所述待搜索用户名的搜索是否存在缓存且所述缓存未过期,获得第一判断结果;第一处理单元,用于在所述第一判断结果表明关于所述待搜索用户名的搜索存在缓存且所述缓存未过期时,获取缓存中的数据并返回;第二判断单元,用于在所述第一判断结果表明关于所述待搜索用户名的搜索不存在缓存或者缓存已过期时,利用所述搜索类型信息判断本次搜索是否为模糊搜索,获得第二判断结果;第三处理单元,用于在所述第二判断结果表明本次搜索是模糊搜索时,在内存预存的全部用户名信息中进行检索,获取包含所述待搜索用户名的用户名信息作为搜索结果,返回所述搜索结果;第四处理单元,用于在所述第二判断结果表明本次搜索不是模糊搜索时,利用数据库本身的索引在所述数据库预存的全部用户名信息中进行检索,获取包含所述待搜索用户名的用户名信息作为搜索结果,返回所述搜索结果。优选的,在上述系统中,还包括缓存处理单元,所述缓存处理单元用于将所述第三处理单元和第四处理单元获得的搜索结果存储于缓存中。由此可见,本发明的有益效果为本发明公开的搜索用户名的方法和系统中,预先将数据库中的全部用户名信息加载至内存中,当需要进行用户名的模糊搜索时,在内存中完成该模糊搜索,由于模糊搜索与数据库中的表没有关联,因此,在模糊搜索过程中数据库不会被锁定,从而缩短了用户名搜索过程中数据库被锁定的时间;另外,在进行模糊搜索的过程中,数据库可以响应其他请求,有利于维护数据库的正常运营及其服务质量的提高。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本发明公开的一种搜索用户名的方法的流程图;图2为本发明公开的另一种搜索用户名的方法的流程图;图3为本发明公开的一种搜索用户名的系统的结构示意图;图4为本发明公开的另一种搜索用户名的系统的结构 示意图。
具体实施例方式对下文中出现的英文缩写进行说明PHP, Hypertext Preprocessor,英文超级文本预处理语言;MYSQL,一种小型关系型数据库管理系统。本发明公开了一种搜索用户名的方法及系统,在搜索用户名的过程中,可以缩短数据库被锁定时间,维护数据库的正常运营并提高其服务质量。为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。参见图1,图I为本发明公开的一种搜索用户名的方法的流程图。包括步骤Sll :接收包含待搜索用户名以及搜索类型信息的指令。用户通过客户端的操作界面输入待搜索用户名,该待搜索用户名为一个字符或者多个字符形成的字符串。搜索类型包括精确搜索、前匹配模糊搜索、后匹配模糊搜索以及模糊匹配搜索,搜索类型可以由用户选择,也可以由客户端确定。步骤S12 :判断关于该待搜索用户名的搜索是否存在缓存且所述缓存未过期,若是,则执行步骤S13,否则,执行步骤S14。步骤S13 :获取缓存中的数据并返回。在本次搜索之前,如果发生过关于该待搜索用户名的搜索,那么会存在与之对应的缓存,进一步判断该缓存是否过期,如果未过期的话,直接获取缓存数据并返回该缓存数据。如果不存在缓存或者缓存已过期,则执行后续搜索步骤。步骤S14:利用搜索类型信息判断本次搜索是否为模糊搜索,若是,则执行步骤S15,否则,执行步骤S16。步骤S15 :在内存预存的全部用户名信息中进行检索,获取包含该待搜索用户名的用户名信息作为搜索结果,返回该搜索结果。预先将数据库中存储的全部用户名信息加载至内存,当需要进行模糊搜索时,在内存中进行检索以获取包含待搜索用户名的用户名信息,将获取的用户名信息作为搜索结果,并返回。在内存中进行模糊搜索的过程中,数据库不会被锁定,可以响应其他请求。步骤S16 :利用数据库本身的索引在数据库预存的全部用户名信息中进行检索,获取包含该待搜索用户名的用户名信息作为搜索结果,返回该搜索结果。本发明上述公开的搜索用户名的方法中,预先将数据库中的全部用户名信息加载至内存中,当需要进行用户名的模糊搜索时,在内存中完成该模糊搜索,由于模糊搜索与数据库中的表没有关联,因此,在模糊搜索过程中数据库不会被锁定,从而缩短了用户名搜索过程中数据库被锁定的时间;另外,在进行模糊搜索的过程中,数据库可以响应其他请求,有利于维护数据库的正常运营及其服务质量的提高。需要说明的是,基于本发明上述公开的方法进行用户名搜索之前,进一步包括将数据库中的全部用户名信息加载至内存的步骤。当然,在系统长期运行过程中,可以按照预设周期将数据库中的全部用户名信息加载至内存,或者当数据库中存储的用户名信息发生变更时,将变更后的用户名信息加载至内存,以保证内存 与数据库中的用户名信息的一致性。实施中,在预存有全部用户名信息的内存中进行检索的步骤具体为以待搜索用户名为关键字,在内存预存的全部的用户名信息中进行遍历。优选的,在将数据库中的全部用户名信息加载至内存之后,还包括按照用户名对所述内存中的全部用户信息进行排序,并建立索引的步骤。当内存中存在全部用户信息的索引时,本发明公开另一种搜索用户名的方法。参见图2,图2为本发明公开的另一种搜索用户名的方法的流程图。包括步骤S21 :接收包含待搜索用户名以及搜索类型信息的指令。步骤S22 :判断关于该待搜索用户名的搜索是否存在缓存且所述缓存未过期,若是,则执行步骤S23,否则,执行步骤S24。步骤S23 :获取缓存中的数据并返回。步骤S24:利用搜索类型信息判断本次搜索是否为模糊搜索,若是,则执行步骤S25,否则,执行步骤S28。步骤S25:判断本次搜索是否为后匹配模糊搜索,若是,则执行步骤S26,否则,执行步骤S27 ;步骤S26 :利用内存的索引在内存预存的全部用户名信息中进行直接定位,获取包含该待搜索用户名的用户名信息作为搜索结果,返回搜索结果;步骤S27 :以待搜索用户名为关键字,在内存预存的全部的用户名信息中进行遍历,获取包含该待搜索用户名的用户名信息作为搜索结果,返回搜索结果;步骤S28 :利用数据库本身的索引在数据库预存的全部用户名信息中进行检索,获取包含该待搜索用户名的用户名信息作为搜索结果,返回该搜索结果。在图2所示搜索用户名的方法中,当对待搜索用户名进行后匹配模糊搜索时,不再采用遍历的方式,而是利用内存的索引进行快速定位,以获取包含该待搜索用户名的用户名信息,可以进一步缩短模糊搜索的时间,并降低内存的功耗。另外,上述公开的各个搜索用户名的方法中,在进行模糊搜索或精确搜索并返回搜索结果后,还包括将该搜索结果存储于缓存中的步骤。如果之后执行关于该待搜索用户名的搜索,可以直接获取缓存数据作为搜索结果输出,而不需要在内存或数据库中进行检索,简化了操作过程、缩短了搜索时间,同时降低了内存和数据库的功耗。需要说明的是,本发明上述公开的各个搜索用户名的方法中,优选C语言进行待搜索用户名的模糊搜索。其原因在于,C语言为底层语言,其执行效率更为高效。当然,也可以采用其他底层语言进行待搜索用户名的模糊搜索,本发明不对其进行限定。本发明上述公开了一种搜索用户名的方法,相应的本发明还公开一种搜索用户名的系统,在搜索用户名的过程中,可以缩短数据库被锁定时间,维护数据库的正常运营并提高其服务质量。参见图3,图3为本发明公开的一种搜索用户名的系统的结构示意图。该搜索用户名的系统包括指令接收单元31、第一判断单元32、第一处理单元33、第二判断单元34、第三处理单元35、第四处理单元36和信息处理单元37。
其中,指令接收单元31用于接收包含待搜索用户名以及搜索类型信息的指令。用户通过客户端的操作界面输入待搜索用户名,该待搜索用户名为一个字符或者多个字符形成的字符串。搜索类型包括精确搜索、前匹配模糊搜索、后匹配模糊搜索以及模糊匹配搜索,搜索类型可以由用户选择,也可以由客户端确定。第一判断单元32用于判断关于所述待搜索用户名的搜索是否存在缓存且所述缓存未过期,获得第一判断结果。第一处理单元33用于在所述第一判断结果表明关于所述待搜索用户名的搜索存在缓存且所述缓存未过期时,获取缓存中的数据并返回。在本次搜索之前,如果发生过关于该待搜索用户名的搜索,那么会存在与之对应的缓存,进一步判断该缓存是否过期,如果未过期的话,直接获取缓存数据并返回该缓存数据。如果不存在缓存或者缓存已过期,则根据具体的搜索类型在内存或数据库进行后续搜索操作。第二判断单元34用于在所述第一判断结果表明关于所述待搜索用户名的搜索不存在缓存或者缓存已过期时,利用所述搜索类型信息判断本次搜索是否为模糊搜索,获得第二判断结果。第三处理单元35用于在所述第二判断结果表明本次搜索是模糊搜索时,在内存预存的全部用户名信息中进行检索,获取包含所述待搜索用户名的用户名信息作为搜索结果,返回所述搜索结果。预先将数据库中存储的全部用户名信息加载至内存,当需要进行模糊搜索时,在内存中进行检索以获取包含待搜索用户名的用户名信息,将获取的用户名信息作为搜索结果,并返回。在内存中进行模糊搜索的过程中,数据库不会被锁定,可以响应其他请求。具体的,第三处理单元35在内存预存的全部用户名信息中进行检索,具体为以所述待搜索用户名为关键字,在所述内存预存的全部的用户名信息中进行遍历。第四处理单元36用于在所述第二判断结果表明本次搜索不是模糊搜索时,利用数据库本身的索引在所述数据库预存的全部用户名信息中进行检索,获取包含所述待搜索用户名的用户名信息作为搜索结果,返回所述搜索结果。信息处理单元37用于将所述数据库中的全部用户名信息加载至内存。在首次进行用户名搜索之前,信息处理单元37需要将数据库中的全部用户名信息加载至内存。当然,在系统长期运行过程中,可以按照预设周期将数据库中的全部用户名信息加载至内存,或者当数据库中存储的用户名信息发生变更时,将变更后的用户名信息加载至内存,以保证内存与数据库中的用户名信息的一致性。
本发明上述公开的搜索用户名的系统中,预先将数据库中的全部用户名信息加载至内存中,当需要进行用户名的模糊搜索时,在内存中完成该模糊搜索,由于模糊搜索与数据库中的表没有关联,因此,在模糊搜索过程中数据库不会被锁定,从而缩短了用户名搜索过程中数据库被锁定的时间;另外,在进行模糊搜索的过程中,数据库可以响应其他请求,有利于维护数据库的正常运营及其服务质量的提高。优选的,信息处理单元37还用于在将数据库中的全部用户名信息加载至内存之后,按照用户名对所述内存中的全部用户信息进行排序,并建立索引。相应的,第三处理单元35在内存预存的全部用户名信息中进行检索,具体为判断本次搜索是否为后匹配模糊搜索;当本次搜索是后匹配模糊搜索时,利用所述内存中的索引在内存预存的全部用户名信息中进行直接定位;当本 次搜索不是后匹配模糊搜索时,以所述待搜索用户名为关键字,在所述内存预存的全部用户名信息中进行遍历。此时,在对待搜索用户名进行后匹配模糊搜索的过程中,不再采用遍历的方式,而是利用内存的索引进行快速定位,以获取包含该待搜索用户名的用户名信息,可以进一步缩短模糊搜索的时间,并降低内存的功耗。参见图4,图4为本发明公开的另一种搜索用户名的系统的结构示意图。仅就与图3所示系统的区别进行说明在图4所示系统中进一步包括缓存处理单元38,该缓存处理单元38用于将所述第三处理单元35和第四处理单元36获得的搜索结果存储于缓存中。在设置缓存处理单元38之后,第三处理单元35和第四处理单元36获得的搜索结果将被存储于缓存中,如果之后执行关于该待搜索用户名的搜索,可以直接获取缓存数据作为搜索结果输出,而不需要在内存或数据库中进行检索,简化了操作过程、缩短了搜索时间,同时降低了内存和数据库的功耗。需要说明的是,在本发明上述公开的各个搜索用户名的系统中,第三处理单元35基于C语言实现。其原因在于,C语言为底层语言,其执行效率更为高效。当然,也可以采用其他底层语言进行待搜索用户名的模糊搜索,本发明不对其进行限定。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对 所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
权利要求
1.一种搜索用户名的方法,其特征在于,包括 接收包含待搜索用户名以及搜索类型信息的指令; 判断关于所述待搜索用户名的搜索是否存在缓存且所述缓存未过期,若是,则获取缓存中的数据并返回,否则,利用所 述搜索类型信息判断本次搜索是否为模糊搜索; 当本次搜索是模糊搜索时,在内存预存的全部用户名信息中进行检索,获取包含所述待搜索用户名的用户名信息作为搜索结果,返回所述搜索结果;当本次搜索不是模糊搜索时,利用数据库本身的索引在所述数据库预存的全部用户名信息中进行检索,获取包含所述待搜索用户名的用户名信息作为搜索结果,返回所述搜索结果。
2.根据权利要求I所述的方法,其特征在于,还包括将所述数据库中的全部用户名信息 加载至内存。
3.根据权利要求I或2所述的方法,其特征在于,在内存预存的全部用户名信息中进行检索,具体为 以所述待搜索用户名为关键字,在所述内存预存的全部的用户名信息中进行遍历。
4.根据权利要求2所述的方法,其特征在于,在将数据库中的全部用户名信息加载至内存之后,还包括按照用户名对所述内存中的全部用户信息进行排序,并建立索引。
5.根据权利要求4所述的方法,其特征在于,在内存预存的全部用户名信息中进行检索,包括 判断本次搜索是否为后匹配模糊搜索; 当本次搜索是后匹配模糊搜索时,利用所述内存中的索引在内存预存的全部用户名信息中进行直接定位; 当本次搜索不是后匹配模糊搜索时,以所述待搜索用户名为关键字,在所述内存预存的全部用户名信息中进行遍历。
6.根据权利要求I所述的方法,其特征在于,在返回所述搜索结果后,还包括将所述搜索结果存储于缓存中。
7.根据权利要求I所述的方法,其特征在于,利用C语言进行待搜索用户名的模糊搜索。
8.一种搜索用户名的系统,其特征在于,包括 信息处理单元,用于将数据库中的全部用户名信息加载至内存; 指令接收单元,用于接收包含待搜索用户名以及搜索类型信息的指令; 第一判断单元,用于判断关于所述待搜索用户名的搜索是否存在缓存且所述缓存未过期,获得第一判断结果; 第一处理单元,用于在所述第一判断结果表明关于所述待搜索用户名的搜索存在缓存且所述缓存未过期时,获取缓存中的数据并返回; 第二判断单元,用于在所述第一判断结果表明关于所述待搜索用户名的搜索不存在缓存或者缓存已过期时,利用所述搜索类型信息判断本次搜索是否为模糊搜索,获得第二判断结果; 第三处理单元,用于在所述第二判断结果表明本次搜索是模糊搜索时,在内存预存的全部用户名信息中进行检索,获取包含所述待搜索用户名的用户名信息作为搜索结果,返回所述搜索结果;第四处理单元,用于在所述第二判断结果表明本次搜索不是模糊搜索时,利用数据库本身的索引在所述数据库预存的全部用户名信息中进行检索,获取包含所述待搜索用户名的用户名信息作为搜索结果,返回所述搜索结果。
9.根据权利要求8所述的系统,其特征在于,还包括缓存处理单元,所述缓存处理单元用于将所述第三处理单元和第四处理单元获得的搜索结果存储于缓存中。
全文摘要
本发明公开了一种搜索用户名的方法,包括接收包含待搜索用户名以及搜索类型信息的指令;判断关于待搜索用户名的搜索是否存在缓存且该缓存未过期,若是,则获取缓存中的数据并返回,否则,利用搜索类型信息判断本次搜索是否为模糊搜索;当本次搜索是模糊搜索时,在内存预存的全部用户名信息中进行检索,获取包含待搜索用户名的用户名信息作为搜索结果并返回;当本次搜索不是模糊搜索时,利用数据库本身的索引在数据库预存的全部用户名信息中进行检索,获取包含待搜索用户名的用户名信息作为搜索结果并返回。本发明公开的方法,缩短了数据库被锁定的时间,有利于维护数据库的正常运营及其服务质量的提高。本发明还公开了一种搜索用户名的系统。
文档编号G06F17/30GK102682068SQ201210051169
公开日2012年9月19日 申请日期2012年3月1日 优先权日2012年3月1日
发明者沈文策 申请人:沈文策
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1