CN103793440A - 信息显示方法和装置 - Google Patents
信息显示方法和装置 Download PDFInfo
- Publication number
- CN103793440A CN103793440A CN201210434835.9A CN201210434835A CN103793440A CN 103793440 A CN103793440 A CN 103793440A CN 201210434835 A CN201210434835 A CN 201210434835A CN 103793440 A CN103793440 A CN 103793440A
- Authority
- CN
- China
- Prior art keywords
- substring
- length
- variable
- record
- character string
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/284—Lexical analysis, e.g. tokenisation or collocates
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种信息显示方法和装置,该方法包括:接收用户输入的信息,并将接收到的信息的字符串U分解为长度为k的输入子字符串;在索引集中查找与分解得到的长度为k的输入子字符串对应的结果,其中,索引集中包含记录集R的每条记录中长度为k的子字符串与该记录之间的映射关系及该记录中各个长度为k的子字符串之间的关联关系,其中,k为正整数;根据查找到的结果进行信息显示,其中,显示的信息包括查找到的与输入子字符串对应的结果所属的记录。本申请解决了相关技术中为用户提供提示信息需要创建索引数量巨大、占用内存空间大的问题,降低了系统内存空间的使用,达到提高系统性能的效果。
Description
技术领域
本申请涉及互联网领域,具体而言,涉及一种信息显示方法和装置。
背景技术
在现有的互联网系统中,当用户在网页上输入信息时,服务器会从预先设定的结果集中找出与用户输入匹配的内容,并以下拉框方式展示供用户进行快捷选择,这是互联网上应用非常广泛的一项技术。上述根据用户的输入信息进行自动提示的技术在搜索引擎、电子商务网站、社交网站等典型互联网应用中都有着很好的应用场景,给用户的使用过程提供了便捷。
现有的信息提示技术实现,是基于对匹配结果集合中所有的子字符串进行完整遍历的基础上建立索引,在用户输入信息时进行索引匹配并把匹配结果返回给用户进行选择。具体来说,现有的技术方案的实施主要分为索引创建和用户输入匹配两个阶段,下面进行具体的说明:
索引创建的过程包括如下的步骤:
1.取记录集中的每一条记录(假设该记录记为R),得出记录的每一个子字符串,记为{C1,C2,C3...},然后建立子字符串与原始记录之间的映射关系:{C1,C2,C3...}→R;
2.将记录集中所有记录的{C1,C2,C3...}→R映射关系表进行归并,归并原则为将Ci相同的项合并到一起,然后Ci指向所有和它关联的R的集合,生成如下结果集,记为Result:
C1→{R1,R2,R3...},C2→{R1,R2,R3...},...;
用户输入匹配的过程包括如下步骤:
1.当用户从输入框输入信息时,从索引结果集Result中对用户输入进行匹配。
2.如果在Result中存在匹配关系Ci,返回Ci对应的{R1,R2,R3...},在用户输入框中以下拉框方式展示,实现输入提示选择功能。
现有的上述方案虽然能够实现为用户显示提示信息,但是上述过程需要在服务端预先对已有的结果集合创建完整索引,在匹配结果集规模较大,字符串长度较长的情况下需要耗费大量的机器内存空间资源,具体分析如下:
现有的方案需要对记录的每一个子字符串建立子字符串到记录的映射关系。假设一条记录的长度为n,那么其子串的个数为n*(n+1)/2。以“iphone”为例,现有的方案需要对所有长度的子字符串建立索引,具体地,包括长度为1的子字符串“i、p、h、o、n、e”,长度为2的子字符串“ip、ph、ho、on、ne”,长度为3的子字符串“iph、pho、hon、one”,以及长度为4的子字符串“ipho、phon、hone”,长度为5的子字符串“iPhon、phone”以及长度为6的子字符串“iphone”,一共需要建立6*(6+1)/2=21个索引。
当结果集规模比较大时,需要生成非常多的子字符串,导致索引创建过程会很耗时,并且,生成的索引文件需要占用非常大的内存空间。假设结果集合中有1000万个记录,平均长度为6,则共需要建立21*1000万=2.1亿个索引。
针对相关技术中的为用户提供提示信息需要创建索引数量巨大,占用内存空间大的问题,尚未提出有效的解决方案。
发明内容
本申请的主要目的在于提供一种信息显示方法和装置,以解决相关技术中为用户提供提示信息需要创建索引数量巨大,占用内存空间大的问题。
根据本申请的一个方面,提供了一种信息显示方法,该方法包括:接收用户输入的信息,并将接收到的信息的字符串U分解为长度为k的输入子字符串;在索引集中查找与分解得到的长度为k的子字符串对应的结果,其中,索引集中包含记录集R的每条记录中长度为k的子字符串与该记录之间的映射关系及该记录中各个长度为k的子字符串之间的关联关系,其中,k为正整数;根据查找到的结果进行信息显示,其中,显示的信息包括查找到的与输入子字符串对应的结果所属的记录。
进一步地,在接收用户输入的信息之前,还包括:创建索引集,索引集包括第一索引表和第二索引表,第一索引表中包含标识ID与记录集中的记录之间的映射关系,第二索引表中包含记录集R的每条记录中长度为k的子字符串与该记录之间的映射关系及该记录中各个长度为k的子字符串之间的关联关系,其中,创建第二索引表的步骤包括:获取记录集R中长度为k的子字符串C,并根据第一索引表确定长度为k的子字符串C所对应的ID;生成第二索引表,第二索引表中的每条索引项包含长度为k的子字符串C和该长度为k的子字符串C所对应的ID、第一变量H和第二变量N,其中,第一变量H用于指向长度为k的子字符串C本身;第二变量N用于指向与子字符串C相关联的下一个长度为k的子字符串。
进一步地,生成第二索引表的步骤包括:步骤A,获取记录集R中的每条记录的第p位置和第q位置间的字符串Ci,以确定字符串Ci所对应的ID,记作IDi,其中,变量p初始值为0,变量q的初始值为k-1;步骤B,获取第p位置和第q位置间的字符串Ci对应的第一变量H,记作Hi,该Hi用于指向第p位置和第q位置间的字符串Ci;步骤C,获取第p位置和第q位置间的字符串Ci对应的第二变量N,记作Ni,该Ni用于指向第p+1位置和第q+1位置间的字符串Ci+1;步骤D,判断KV集合中是否存在字符串Cj与字符串Ci相同,若不存在,则将Ci、IDi、Hi和Ni添加到KV集合中,若存在,则将IDi、Hi和Ni添加到KV集合中Cj对应的value中,其中,KV集合的key值为长度为k的子字符串C,value值为长度为k的子字符串C对应的ID、第一变量H和第二变量N,KV集合初始值为空;步骤E,判断变量Parent是否为null,若是,则将变量Parent指向KV集合中字符串Ci到字符串Ci对应的IDi、Hi和Ni的映射关系;若不是,则取出变量Parent指向的子字符串C到该子字符串C对应的ID、第一变量H和第二变量N的映射关系,并令该第二变量N指向IDi,其中,变量Parent用于指向子字符串C到与该子字符串C对应的ID、第一变量H和第二变量N的映射关系,变量Parent的初始值为null;步骤F,p=p+1,q=q+1;执行上述步骤A至步骤F,直至q>s,将得到的KV集合作为第二索引表,其中,s为记录集中每条记录的长度。
进一步地,接收用户输入的信息,并将接收到的信息的字符串U分解为长度为k的输入子字符串的步骤包括:判断接收的信息的字符串U的长度是否大于或等于k,若不是,则继续接收输入的信息直至接收的信息的字符串U长度大于或等于k;若接收的信息的字符串U长度大于或等于k,则将字符串U分解为长度为k的子字符串,并根据分解得到的长度为k的输入子字符串之间的关联关系进行排序,记作C1,C2…Cn。
进一步地,在索引集中查找与分解得到的长度为k的输入子字符串对应的结果的步骤包括:在第二索引表中查找分解字符串U得到的长度为k的输入子字符串C1对应的记录的ID、第一变量H和第二变量N,生成结果集N,记作{ID1 N1 H1,ID2 N2 H2…IDm Nm Hm};判断结果集A中是否存在结果,若存在,则依次获取每个结果,并判断每个结果是否符合提示要求,若符合,将该结果作为长度为k的输入子字符串对应的结果。
进一步地,判断每个结果是否符合提示要求的步骤包括:获取结果集A中的结果中的IDy、Ny、Hy;执行以下步骤,直至P>n,则判断出当前结果符合提示要求:步骤A,判断子字符串CP与Hy指向的子字符串后面的第P-1个字符串是否相等,其中,变量P初始值为2;步骤B,若子字符串CP与Hy指向的子字符串后面的第P-1个字符串相等,则令P=P+1,若不相等,则判断出当前结果不符合提示要求。
进一步地,判断每个结果是否符合提示要求的步骤还包括:判断符合提示要求的结果数是否达到提示信息项目数的上限,若判断出提示要求的结果数达到提示信息项目数的上限,则不再判断其它结果是否符合提示要求。
根据本申请的另一方面,提供了一种信息显示装置,该装置包括:分解单元,用于接收用户输入的信息,并将接收到的信息的字符串U分解为长度为k的输入子字符串;查找单元,用于在索引集中查找与分解得到的长度为k的输入子字符串对应的结果,其中,索引集中包含记录集R的每条记录中长度为k的子字符串与该记录之间的映射关系及该记录中各个长度为k的子字符串之间的关联关系,其中,k为正整数;显示单元,用于根据查找到的结果进行信息显示,其中,显示的信息包括查找到的与输入子字符串对应的结果所属的记录。
进一步地,该装置还包括:创建单元,用于在接收用户输入的信息之前,创建索引集,其中,索引集包括第一索引表和第二索引表,第一索引表中包含标识ID与记录集中的记录之间的映射关系,第二索引表中包含记录集R的每条记录中长度为k的子字符串与该记录之间的映射关系及该记录中各个长度为k的子字符串之间的关联关系,创建单元包括:确定模块,用于获取记录集R中长度为k的子字符串C,并确定长度为k的子字符串C所对应的ID;生成模块,用于生成第二索引表,第二索引表中的每条索引项包含长度为k的子字符串C、长度为k的子字符串C所对应的ID、第一变量H和第二变量N,其中,第一变量H用于指向长度为k的子字符串C本身;第二变量N用于指向与子字符串C相关联的下一个长度为k的子字符串。
进一步地,生成模块包括:第一获取子模块,用于获取记录集R中的每条记录的第p位置和第q位置间的字符串Ci,确定字符串Ci所对应的ID,记作IDi,其中,变量p初始值为0,变量q的初始值为k-1;第二获取子模块,用于获取第p位置和第q位置间的字符串Ci对应的第一变量H,记作Hi,用于指向第p位置和第q位置间的字符串Ci;第三获取子模块,用于获取第p位置和第q位置间的字符串Ci对应的第二变量N,记作Ni,用于指向第p+1位置和第q+1位置间的字符串Ci+1;第一判断子模块,用于判断KV集合中是否存在字符串Cj与字符串Ci相同,若不存在,则将Ci、IDi、Hi和Ni添加到KV集合中,若存在,则将IDi、Hi和Ni添加到KV集合中Cj对应的value中,其中,KV集合的key值为长度为k的子字符串C,value值为长度为k的子字符串C对应的ID、第一变量H和第二变量N,KV集合初始值为空;第二判断子模块,用于判断变量Parent是否为null,若是,则将变量Parent指向KV集合中字符串Ci到字符串Ci对应的IDi、Hi和Ni的映射关系;若不是,则取出变量Parent指向的子字符串C到该子字符串C对应的ID、第一变量H和第二变量N的映射关系,并令第二变量N指向IDi,其中,变量Parent用于指向子字符串C到与该子字符串C对应的ID、第一变量H和第二变量N的映射关系,变量Parent的初始值为null;循环子模块,用于令p=p+1,q=q+1;生成子模块,用于在q>s时,将得到的KV集合作为第二索引表,其中,s为记录集中每条记录的长度。
进一步地,分解单元包括:第一判断模块,用于判断接收的信息的字符串U的长度是否大于或等于k,若不是,则继续接收输入的信息直至接收的信息的字符串U长度大于或等于k;分解模块,用于在第一判断模块判断出接收的信息的字符串U长度大于或等于k时,将字符串U分解为长度为k的子字符串,并根据分解得到的长度为k的输入子字符串之间的关联关系进行排序,记作C1,C2…Cn。
进一步地,查找单元包括:查找模块,用于在第二索引表中查找分解字符串U得到的长度为k的输入子字符串C1对应的记录的ID、第一变量H和第二变量N,生成结果集A,记作{ID1 N1 H1,ID2 N2 H2…IDm Nm Hm};第二判断模块,用于判断结果集A中是否存在结果;第三判断模块,用于在第二判断模块判断出结果集A中存在结果时,依次获取每个结果,并判断每个结果是否符合提示要求;提示模块,用于在第三判断模块判断出结果符合提示要求时,将该结果作为长度为k的输入子字符串对应的结果。
进一步地,第三判断模块包括:获取子模块,用于获取结果集A中的结果中的IDy、Ny、Hy;第三判断子模块,用于执行以下步骤,直至P>n,则判断出当前结果符合提示要求:步骤A,判断子字符串CP与Hy指向的子字符串后面的第P-1个字符串是否相等,其中,变量P初始值为2;步骤B,若子字符串CP与Ny指向的子字符串相等,则令P=P+1,若不相等,则判断出当前结果不符合提示要求。
在本申请记载的技术方案中,为用户进行信息提示所建立的索引表中包含不同子字符串之间的位置关联关系,这种包含不同子字符串之间的位置关联关系的索引表的建立,使得我们不需要再对记录的每个子字符串及其组合建立索引,只需对其中长度为k的子字符串建立索引,利用建立的长度为k的子字符串的索引和上述的不同子字符串之间的位置关联关系即可实现根据用户输入的信息进行匹配提示功能。这种进行信息提示的方案大量减少了建立的索引数量,有效解决了相关技术中为用户提供提示信息需要创建索引数量巨大、占用内存空间大的问题,降低了系统内存空间的使用,达到提高系统性能的效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的信息显示系统的一种优选的结构框图;
图2是根据本申请实施例的信息显示装置的一种优选的结构框图;
图3是根据本申请实施例的信息显示装置的另一种优选的结构框图;
图4是根据本申请实施例的信息显示装置的生成模块的一种优选的结构框图;
图5是根据本申请实施例的信息显示装置的又一种优选的结构框图;
图6是根据本申请实施例的信息显示装置的查找单元的一种优选的结构框图;
图7是根据本申请实施例的信息显示方法的一种优选的流程示意图;
图8是根据本申请实施例的信息显示方法的索引建立的一种优选的流程示意图;
图9示根据本申请实施例的信息显示方法建立的索引的示意图;
图10是根据本申请实施例的信息显示方法的记录索引过程的一种优选的流程示意图;
图11是根据本申请实施例的信息显示方法的进行信息匹配的一种优选的流程示意图;以及
图12是根据本申请实施例的信息显示方法的ID判断过程的一种优选的流程示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
在描述本申请的各实施例的进一步细节之前,将参考图1来描述可用于实现本申请的原理的一个合适的计算体系结构。在以下描述中,除非另外指明,否则将参考由一个或多个计算机执行的动作和操作的符号表示来描述本申请的各实施例。由此,可以理解,有时被称为计算机执行的这类动作和操作包括计算机的处理单元对以结构化形式表示数据的电信号的操纵。这一操纵转换了数据或在计算机的存储器系统中的位置上维护它,这以本领域的技术人员都理解的方式重配置或改变了计算机的操作。维护数据的数据结构是具有数据的格式所定义的特定属性的存储器的物理位置。然而,尽管在上述上下文中描述本申请,但它并不意味着限制性的,如本领域的技术人员所理解的,后文所描述的动作和操作的各方面也可用硬件来实现。
转向附图,其中相同的参考标号指代相同的元素,本申请的原理被示为在一个合适的计算环境中实现。以下描述基于的本申请的实施例,并且不应认为是关于此处未明确描述的替换实施例而限制本申请。
图1示出了可用于这些设备的一个示例计算机体系结构的示意图。出于描述的目的,所绘的体系结构仅为合适环境的一个示例,并非对本申请的使用范围或功能提出任何局限。也不应将该计算系统解释为对图1所示的任一组件或其组合具有任何依赖或需求。
本申请的原理可以使用其它通用或专用计算或通信环境或配置来操作。适用于本申请的众所周知的计算系统、环境和配置的示例包括但不限于,个人计算机、服务器,多处理器系统、基于微处理的系统、小型机、大型计算机、以及包括任一上述系统或设备的分布式计算环境。
在其最基本的配置中,图1中的信息显示系统100至少包括:一个网站的服务器102以及一个或多个客户端104。服务器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置、用于存储数据的存储装置以及与客户端通信的传输装置;客户端104可以包括:微处理器MCU、与服务器通信的传输装置、与用户交互的显示装置。在本说明书和权利要求书中,“信息显示系统”也可以被定义为能够执行软件、固件或微码来实现功能的任何硬件组件或硬件组件的组合。信息显示系统100甚至可以是分布式的,以实现分布式功能。
如本申请所使用的,术语“模块”、“组件”或“单元”可以指在信息显示系统100上执行的软件对象或例程。此处所描述的不同组件、模块、单元、引擎和服务可被实现为在信息显示系统100上执行(例如,作为单独的线程)的对象或进程。尽管此处所描述的系统和方法较佳地以软件来实现,但是硬件或软件和硬件的组合的实现也是可能并被构想的。
实施例1
本申请优选的实施例提供了一种信息显示装置,图2示出该装置的一种优选的结构框图,如图2所示,信息显示装置包括:分解单元202,用于接收用户输入的信息,并将接收到的信息的字符串U分解为长度为k的输入子字符串;查找单元204,与分解单元202连接,用于在索引集中查找与分解得到的长度为k的输入子字符串对应的结果,其中,索引集中包含记录集R的每条记录中长度为k的子字符串与该记录之间的映射关系及该记录中各个长度为k的子字符串之间的关联关系,其中,k为正整数;显示单元206,与查找单元204连接,用于根据查找到的结果进行信息显示,其中,显示的信息包括查找到的与输入子字符串对应的结果所属的记录。优选的,索引集包括第一索引表和第二索引表,其中,第一索引表中包含记录集中各记录的标识ID与记录集中的记录之间的映射关系,第二索引表中包含记录集R的每条记录中长度为k的子字符串与该记录之间的映射关系及该记录中各个长度为k的子字符串之间的关联关系。例如,记录集R包括“iphone”和“ipad”两条记录,则为“iphone”和“ipad”两条记录各自分配唯一的ID来对应,如,为“iphone”分配的ID为ID1,为“ipad”分配的ID为ID2,第一索引表中存储有ID1到记录“iphone”的映射和ID2到“ipad”的映射。假设k=2,则记录集R的每条记录中长度为k的子字符串包括:ip,ph,ho,on,no,pa,ad,其中,ip,ph,ho,on,no为“iphone”的子字符串,ip,pa,ad为“ipad”的子字符串,第二索引表包含有上述的长度为2的子字符串到记录的映射关系,例如,ip→{iphone,ipad},no→{iphone},ad→{ipad},第二索引表还包括各个长度为k的子字符串之间基于物理位置的关联关系,优选的,可以通过定义不同变量来指示记录中各个长度为k的子字符串之间的关联关系。
在上述记载的优选的实施方式中,为用户进行信息提示所建立的索引表中包含记录不同子字符串之间的位置关联关系,这种包含不同子字符串之间的位置关联关系的索引表的建立,使得我们不需要再对记录的每个子字符串建立索引,只需对其中长度为k的子字符串建立索引,利用建立的长度为k的子字符串的索引和上述的不同子字符串之间的位置关联关系即可实现根据用户输入的信息进行匹配提示功能。这种进行信息提示的方案大量减少了建立的索引数量,有效解决了相关技术中为用户提供提示信息需要创建索引数量巨大、占用内存空间大的问题,降低了系统内存空间的使用,达到提高系统性能的效果。
本申请还对上述装置进行了优化,具体地,如图3所示,该装置还包括创建单元208,用于在接收用户输入的信息之前,创建索引集,其中,索引集包括第一索引表和第二索引表,第一索引表中包含记录集中各记录的标识ID与记录集中的记录之间的映射关系,第二索引表中包含记录集R的每条记录中长度为k的子字符串与该记录之间的映射关系及该记录中各个长度为k的子字符串之间的关联关系,具体地,创建单元208包括:确定模块302,用于获取记录集R中长度为k的子字符串C,并确定长度为k的子字符串C所对应的标识ID;生成模块304,与确定模块302连接,用于生成第二索引表,第二索引表中的每条索引项包含长度为k的子字符串C、长度为k的子字符串C所对应的标识ID、第一变量H和第二变量N,其中,第一变量H用于指向长度为k的子字符串C本身;第二变量N用于指向与子字符串C相关联的下一个长度为k的子字符串。在上述优选的实施例中,提供了一种创建单元202创建第二索引表的方案,通过定义变量N、H实现了第二索引表中包含各个长度为k的子字符串之间基于物理位置的关联关系。
在本申请的一个实施例中,还提供了一种生成模块304的优选的方案,具体地,如图4所示,生成模块304包括:第一获取子模块402,用于获取记录集R中的每条记录的第p位置和第q位置间的字符串Ci,确定字符串Ci所对应的ID,记作IDi,其中,变量p初始值为0,变量q的初始值为k-1;第二获取子模块404,用于获取第p位置和第q位置间的字符串Ci对应的第一变量H,记作Hi,用于指向第p位置和第q位置间的字符串Ci;第三获取子模块406,用于获取第p位置和第q位置间的字符串Ci对应的第二变量N,记作Ni,用于指向第p+1位置和第q+1位置间的字符串Ci+1;第一判断子模块408,分别与第一获取子模块402、第二获取子模块404及第三获取子模块406连接,用于判断KV集合中是否存在与字符串Ci相同的字符串Cj,若不存在,则将Ci、IDi、Hi和Ni添加到KV集合中,若存在,则将IDi、Hi和Ni添加到KV集合中Cj对应的value中,其中,KV集合的key值为长度为k的子字符串C,value值为长度为k的子字符串C对应的ID、第一变量H和第二变量N,KV集合初始值为空;第二判断子模块410,与第一判断子模块408连接,用于判断变量Parent是否为null,若是,则将变量Parent指向KV集合中字符串Ci到字符串Ci对应的IDi、Hi和Ni的映射关系;若不是,则取出变量Parent指向的子字符串C到该子字符串C对应的ID、第一变量H和第二变量N的映射关系,并令第二变量N指向IDi,其中,变量Parent用于指向子字符串C到与该子字符串C对应的ID、第一变量H和第二变量N的映射关系,变量Parent的初始值为null;循环子模块412,与第二判断子模块410连接,用于令p=p+1,q=q+1;生成子模块414,与循环子模块412连接,用于在q>s时,将得到的KV集合作为第二索引表,其中,s为记录集中每条记录的长度。上述优选的技术方案的实施,提供了一种生成包含长度为k的子字符串C、长度为k的子字符串C所对应的ID、第一变量H和第二变量N的第二索引表的具体的实施方案。
在本申请的一个优选的实施方式中,还提供了一种分解单元202接收用户输入的信息,并将接收到的信息的字符串U分解为长度为k的输入子字符串的优选的方案,具体来说,如图5所示,分解单元202包括:第一判断模块502,用于判断接收的信息的字符串U的长度是否大于或等于k,若判断接收的信息的字符串U的长度小于k,则继续接收输入的信息直至接收的信息的字符串U长度大于或等于k;分解模块504,与第一判断模块502连接,用于在第一判断模块判断出接收的信息的字符串U长度大于或等于k时,将字符串U分解为长度为k的子字符串,并根据分解得到的长度为k的输入子字符串之间的关联关系进行排序,记作C1,C2…Cn,优选的排序依据为:获取接收到的信息的字符串U第一位至第k位的字符串作为C1,获取字符串U第二位至第k+1位的字符串作为C2,依次类推。此外,本申请还提供了一种查找单元204在索引集中查找与分解得到的长度为k的输入子字符串对应的子字符串的优选的方案,具体地,如图6所示,查找单元204包括:查找模块602,用于在第二索引表中查找分解字符串U得到的长度为k的输入子字符串C1对应的记录的ID、第一变量H和第二变量N,生成结果集A,记作{ID1 N1 H1,ID2 N2 H2…IDm Nm Hm};第二判断模块604,与查找模块602连接,用于判断结果集A中是否存在结果;第三判断模块606,与第二判断模块604连接,用于在第二判断模块604判断出结果集A中存在结果时,依次获取每个结果,并判断每个结果是否符合提示要求;提示模块608,与第三判断模块606连接,用于在第三判断模块606判断出结果符合提示要求时,,将该结果作为长度为k的输入子字符串对应的结果。
在本申请的一个优选的实施方式中,还对上述第三判断模块进行了优化,具体地,第三判断模块包括:获取子模块,用于获取结果集A中的结果中的IDy、Ny、Hy;第三判断子模块,用于执行以下步骤,直至P大于n,则判断出当前结果符合提示要求:步骤A,判断子字符串CP和Hy指向的子字符串后面的第P-1个字符串是否相等,其中,变量P初始值为2;步骤B,若子字符串CP和Ny指向的子字符串相等,则令P=P+1,若不相等,则判断出当前结果不符合提示要求。
优选的,上述装置还包括判断单元,用于判断符合提示要求的结果数是否达到提示信息项目数的上限,若判断出提示要求的结果数达到提示信息项目数的上限,则不再判断其它结果是否符合提示要求。
实施例2
在上述实施例1记载的信息显示装置的基础上,本优选的实施例提供了一种信息显示方法,图7示出信息显示方法的一种优选的流程图,该方法包括如下步骤:
S702,接收用户输入的信息,并将接收到的信息的字符串U分解为长度为k的输入子字符串;
S704,在索引集中查找与分解得到的长度为k的输入子字符串对应的结果,其中,索引集中包含记录集R的每条记录中长度为k的子字符串与该记录之间的映射关系及该记录中各个长度为k的子字符串之间的关联关系,其中,k为正整数;
优选的,索引集包括第一索引表和第二索引表,第一索引表中包含标识ID与记录集中的记录之间的映射关系,第二索引表中包含记录集R的每条记录中长度为k的子字符串与该记录之间的映射关系及该记录中各个长度为k的子字符串之间的关联关系,例如,记录集R包括“iphone”和“ipad”两条记录,则为“iphone”和“ipad”两条记录各自分配唯一的ID来对应,如,为“iphone”分配的ID为ID1,为“ipad”分配的ID为ID2,第一索引表中存储有ID1到记录“iphone”的映射和ID2到“ipad”的映射。假设k=2,则记录集R的每条记录中长度为k的子字符串包括:ip,ph,ho,on,no,pa,ad,其中,ip,ph,ho,on,no为“iphone”的子字符串,ip,pa,ad为“ipad”的子字符串,第二索引表包含有上述的长度为2的子字符串到记录的映射关系,例如,ip→{iphone,ipad},no→{iphone},ad→{ipad},第二索引表还包括各个长度为k的子字符串之间基于物理位置的关联关系,优选的,可以通过定义不同变量来指示记录中各个长度为k的子字符串之间的关联关系。
S706,根据查找到的结果进行信息显示,其中,显示的信息包括查找到的与输入子字符串对应的结果所属的记录。
上述优选的实施方式中,为用户进行信息提示所建立的索引表中包含记录不同子字符串之间的位置关联关系,这种包含不同子字符串之间的位置关联关系的索引表的建立,使得我们不需要再对记录的每个子字符串及其组合建立索引,只需对其中长度为k的子字符串建立索引,利用建立的长度为k的子字符串的索引和上述的不同子字符串之间的位置关联关系即可实现根据用户输入的信息进行匹配提示功能。这种进行信息提示的方案大量减少了建立的索引数量,有效解决了相关技术中为用户提供提示信息需要创建索引数量巨大、占用内存空间大的问题,降低了系统内存空间的使用,达到提高系统性能的效果。
在本申请的一个优选的实施方式中,还对上述方案进行了优化,具体来说,在接收用户输入的信息之前,还包括:创建索引集,索引集包括第一索引表和第二索引表,第一索引表中包含标识ID与记录集中的记录之间的映射关系,例如,记录集R包括“iphone”和“ipad”两条记录,则为“iphone”和“ipad”两条记录各自分配唯一的ID来对应,如,为“iphone”分配的ID为ID1,为“ipad”分配的ID为ID2,第一索引表中存储有ID1到记录“iphone”的映射和ID2到“ipad”的映射。第二索引表中包含记录集R的每条记录中长度为k的子字符串与该记录之间的映射关系及该记录中各个长度为k的子字符串之间的关联关系,其中,创建第二索引表的步骤包括:获取记录集R中长度为k的子字符串C,并根据第一索引表确定长度为k的子字符串C所对应的ID;生成第二索引表,第二索引表中的每条索引项包含长度为k的子字符串C和该长度为k的子字符串C所对应的ID、第一变量H和第二变量N,其中,第一变量H用于指向长度为k的子字符串C本身;第二变量N用于指向与子字符串C相关联的下一个长度为k的子字符串,例如,假设k=2,则记录集R的每条记录中长度为k的子字符串包括:ip,ph,ho,on,no,pa,ad,其中,ip,ph,ho,on,no为“iphone”的子字符串,ip,pa,ad为“ipad”,第二索引表包含有上述的长度为2的子字符串到记录的映射关系,如,ip→{iphone,ipad},no→{iphone},ad→{ipad},根据第一索引表中的映射关系可以确定与每个子字符串对应的ID,假设第一索引表中与记录iphone对应的ID为ID1,与ipad对应的ID为ID2,则与子字符串“ip”对应的ID为ID1和ID2,与子字符串“no”对应的ID为ID1,与子字符串“ad”对应的ID为ID2;定义的第一变量H用于指向长度为k的子字符串C本身,定义的第二变量N用于指向与子字符串C相关联的下一个长度为k的子字符串,例如,与子字符串“ip”对应的第一变量H指向子字符串“ip”本身,与子字符串“ip”对应的第二变量N指向子字符串“ip”的相关联的下一个长度为k的子字符串,在上面的示例中,子字符串“ip”的相关联的下一个子字符串为“ph”和“pa”。
本申请还提供了一种生成第二索引表的具体的方式,优选的,生成第二索引表的步骤包括:步骤A,获取记录集R中的每条记录的第p位置和第q位置间的字符串Ci,以确定字符串Ci所对应的ID,记作IDi,其中,变量p初始值为0,变量q的初始值为k-1;步骤B,获取第p位置和第q位置间的字符串Ci对应的第一变量H,记作Hi,该Hi用于指向第p位置和第q位置间的字符串Ci;步骤C,获取第p位置和第q位置间的字符串Ci对应的第二变量N,记作Ni,该Ni用于指向第p+1位置和第q+1位置间的字符串Ci+1;步骤D,判断KV集合中是否存在字符串Cj与字符串Ci相同,若不存在,则将Ci、IDi、Hi和Ni添加到KV集合中,若存在,则将IDi、Hi和Ni添加到KV集合中Cj对应的value中,其中,KV集合的key值为长度为k的子字符串C,value值为长度为k的子字符串C对应的ID、第一变量H和第二变量N,KV集合初始值为空;步骤E,判断第三变量Parent是否为null,若是,则将该第三变量Parent指向KV集合中字符串Ci到字符串Ci对应的IDi、Hi和Ni的映射关系;若不是,则取出第三变量Parent指向的子字符串C到该子字符串C对应的ID、第一变量H和第二变量N的映射关系,并令该第二变量N指向IDi,其中,变量Parent用于指向子字符串C到与该子字符串C对应的ID、第一变量H和第二变量N的映射关系,变量Parent的初始值为null;步骤F,p=p+1,q=q+1。执行上述步骤A至步骤F,直至q>s,将得到的KV集合作为第二索引表,其中,s为记录集中每条记录的长度。
在本申请的一个优选的实施方式中,还提供了一种接收用户输入的信息,并将接收到的信息的字符串U分解为长度为k的输入子字符串的优选方案,具体来说,该方案包括如下步骤:判断接收的信息的字符串U的长度是否大于或等于k,若不是,则继续接收输入的信息直至接收的信息的字符串U长度大于或等于k;若接收的信息的字符串U长度大于或等于k,则将字符串U分解为长度为k的子字符串,并根据分解得到的长度为k的输入子字符串之间的关联关系进行排序,记作C1,C2…Cn。优选的,在索引集中查找与分解得到的长度为k的输入子字符串对应的结果的步骤包括:在第二索引表中查找分解字符串U得到的长度为k的输入子字符串C1对应的记录的ID、第一变量H和第二变量N,生成结果集A,记作{ID1 N1H1,ID2 N2 H2…IDm Nm Hm};判断结果集A中是否存在结果,若存在,则依次获取每个结果,并判断每个结果是否符合提示要求,若符合,将该结果作为长度为k的输入子字符串对应的结果。
本申请还提供了一种判断每个结果是否符合提示要求的方案,包括如下步骤:获取结果集A中的结果中的IDy、Ny、Hy;执行以下步骤,直至P大于n,则判断出当前结果符合提示要求:步骤A,判断子字符串CP和Hy指向的子字符串后面的第P-1个字符串是否相等,其中,变量P初始值为2;步骤B,若子字符串CP和Ny指向的子字符串相等,则令P=P+1。
优选的,在上述判断每个结果是否符合提示要求的过程中,判断符合提示要求的结果数是否达到提示信息项目数的上限,若判断出提示要求的结果数达到提示信息项目数的上限,则不再判断其它结果是否符合提示要求。
实施例3
在上述实施例1和实施例2的基础上,本申请还提供了另一种信息显示的方法,该方法包括两个过程:索引建立和用户输入匹配,下面进行具体说明:
一、索引建立过程
假设已经有一组数据记录集,该记录集中没有重复的数据,且已经按照顺序进行排序。建立索引的过程依次遍历数据记录集中所有的记录,创建字符串到对应的记录的映射关系,最后会生成两个结果集:
1)ID索引:保存的是唯一的ID到每条记录的映射;
2)子字符串索引:保存的是每个子字符串到记录的索引,以及各个子字符串之间的基于物理位置的关联关系。
具体来说,图8示出索引建立的一种优选的流程图,如图8所示,索引建立的过程包括如下步骤:
S802,取记录集中一条记录集,记作Ri;
S804,为Ri分配ID,记作IDi,并记录IDi到Ri的映射;
S806,调用“记录索引过程”子程序,其中,“记录索引过程”子程序见图9;
S808,判断记录集中是否存在其他记录,若存在,执行步骤S802-S806,直至记录集中不存在其他记录;
S810,结束。
图9示出上述步骤结束后生成的索引,包括ID索引和子字符串索引,在ID索引中,R1,R2…Rn为记录集中每条记录,ID1,ID2…IDn为与记录R1,R2…Rn唯一对应的ID;在子字符串索引中,C1C2…Cn代表长度为k的子字符串,每个子字符串分别有与该子字符串对用的ID、变量N和变量H,其中,变量N用于指向该子字符串下一个字符串,变量H用于指向该子字符串本身。
图10示出上述记录索引过程的流程图,包括如下步骤:
S1002,获取当前记录Ri的长度和ID,分别记作s和IDi;
S1004,记两个变量p、q,p的初始值为0,q的初始值为k-1,k为预定的字符串的长度,k≥1,另记一个变量Parent,初始值为null;
S1006,取记录Ri中第p个位置和第q个位置间的字符串,记作Ci,变量Ni指向它的下一个字符串(p+1,q+1位置之间的字符串);
S1008,记一个KV集合,key值为字符串C,value值为ID、N和、H;
S1010,判断M中是否存在子字符串Cj=Ci,若存在,执行步骤S1012,否则执行S1014;
S1012,将Ci对应的IDi、Ni、Hi添加到Cj对应的value中,优选的,加入时保证ID从小到大的顺序,在存在相同的ID时,排在已有的最后一个ID的后面;
S1014,在KV集合中新一个Key value对Ci→{IDi Ni Hi};
S1016,判断Parent是否为null,若是,则执行步骤S1020,否则,执行步骤S1018-S1020;
S1018,取出Parent对应的C→{ID N H},将N指向{IDi Ni Hi};
S1020,令p加1,q加1,Parent指向Ci→{IDi Ni Hi};
S1022,判断是否q≤s,若是,则执行步骤S1006-S1020,否则结束该记录索引过程。
具体来说,上述的过程主要分为以下两个步骤:
第一,将记录分解为字符串形式,比如,两条记录iphone和ipad分解为长度为2的子字符串,iphone就是{ip,ph,ho,on,ne},ipad就是{ip,pa,ad};
第二,把分解出的子字符串添加到子字符串到记录集的KV集合中,具体分析如下:
添加ip->iphone的时候,ip这个key在KV集合中还不存在,就直接加入;
添加ip->ipad的时候,由于ip这个key已经有值了,并且对应的value是iphone,那么就把ipad添加到已有的value中,成为Ip–>{iphone,ipad};
添加记录的同时,还要保证该字符串和它的下一个的字符串的关系,比如说,添加ip->iphone,再添加ph->iphone时,要记录IP对应的ID1(也就是iphone)的下一个节点是Ph对应的ID1,这样在索引结构中就保留了ip的字符串是有ph这个信息。
二、用户输入匹配过程
在获取用户输入信息后,从建立的字符串索引关系表中查找匹配信息,并返回匹配结果集以下拉框的方式展示,实现用户提示选择功能。
具体来说,图11示出上述过程的一种优选的流程图,包括如下步骤:
S1102,获取用户输入的字符串U,及其长度s;
S1104,判断是否s≥k,若不是,则跳转1102,直至s≥k,执行步骤S1106;
S1106,将U分解为长度为k的多个子字符串{C1,C2…Cn};
S1108,用C1在子字符串索引中查找对应的结果集,该结果集记作{ID1 N1 H1,ID2 N2H2…IDm Nm Hm};
S1110,判断是否查找到结果,若是,则执行步骤S1112,否则,结束。
S1112,定义变量y,初始值为1,取{IDy Ny Hy};
S1114,调用“ID判断过程”子程序以检测IDy是否符合建议要求,其中,“ID判断过程”子程序如图11所示;
S1116,判断IDy是否可以建议,若是,则执行步骤S1118,否则,执行步骤S1124;
S1118,判断是否达到输入建议项上限,若是,执行步骤S1120,否则,执行步骤S1122;
S1120,将结果集中的ID根据ID索引转换成真实值并返回;
S1122,将IDy加入输入建议结果集中,并执行S1124;
S1124,令y+1;
S1126,判断是否y≤m,若是,执行步骤S1112-S1124,直至i大于m后,执行步骤S1120。
图12为上述ID判断过程的一种优选的流程图,包括如下步骤:
S1202,获取用户输入的子字符串{C1,C2…Cn}中当前需要判断的子字符串所对应的{IDyNy Hy};
S1204,记变量P,其中变量P初始值为2;
S1206,取CP和Hy指向的子字符串后面的第P-1个字符串比较;
S1208,判断CP和Hy指向的子字符串后面的第P-1个字符串是否相等,若是,则执行步骤S1210,否者,判断出IDy不符合建议要求;
S1210,令P+1;
S1212,判断是否P≤n,若是,则执行步骤S1206-S1212,直至P>n,判断出IDy符合建议要求。
具体来说,在匹配过程中,例如,现在有两条记录ID1=iphone,ID2=ipad,用户输入了“iph”这个三个字符,推荐时首先将用户输入的“iph”分解为子串形式{C1,C2..Cn},也就是{ip,ph}对于“ip”来说,能够找到ID1和ID2,其中ID1和ID2哪个是符合条件的呢?就要继续比较用户输入的“iph”中“ip”的下一个字符串是“ph”,而ID1的下一个字符串是“ph”,ID2的下一个字符串是“pa”。所以ID1才是符合的,则根据ID索引可以确定最终推荐给用户的是记录“iphone”。
从以上描述中可以看出,本申请优选的实施例为用户进行信息提示所建立的索引表中包含记录不同子字符串之间的位置关联关系,这种包含不同子字符串之间的位置关联关系的索引表的建立,使得我们不需要再对记录的每个子字符串及其组合建立索引,只需对其中长度为k的子字符串建立索引,利用建立的长度为k的子字符串的索引和上述的不同子字符串之间的位置关联关系即可实现根据用户输入的信息进行匹配提示功能。这种进行信息提示的方案大量减少了建立的索引数量,有效解决了相关技术中为用户提供提示信息需要创建索引数量巨大、占用内存空间大的问题,降低了系统内存空间的使用,达到提高系统性能的效果。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (13)
1.一种信息显示方法,其特征在于,包括:
接收用户输入的信息,并将接收到的信息的字符串U分解为长度为k的输入子字符串;
在索引集中查找与分解得到的所述长度为k的输入子字符串对应的结果,其中,所述索引集中包含记录集R的每条记录中长度为k的子字符串与该记录之间的映射关系及该记录中各个所述长度为k的子字符串之间的关联关系,其中,k为正整数;
根据查找到的结果进行信息显示,其中,显示的信息包括查找到的与所述输入子字符串对应的结果所属的记录。
2.根据权利要求1所述的方法,其特征在于,在接收用户输入的信息之前,还包括:创建索引集,所述索引集包括第一索引表和第二索引表,所述第一索引表中包含标识ID与记录集中的记录之间的映射关系,所述第二索引表中包含记录集R的每条记录中长度为k的子字符串与该记录之间的映射关系及该记录中各个所述长度为k的子字符串之间的关联关系,其中,创建所述第二索引表的步骤包括:
获取所述记录集R中长度为k的子字符串C,并根据所述第一索引表确定所述长度为k的子字符串C所对应的ID;
生成第二索引表,所述第二索引表中的每条索引项包含长度为k的子字符串C和该长度为k的子字符串C所对应的ID、第一变量H和第二变量N,其中,所述第一变量H用于指向长度为k的子字符串C本身;所述第二变量N用于指向与所述子字符串C相关联的下一个长度为k的子字符串。
3.根据权利要求2所述的方法,其特征在于,所述生成第二索引表的步骤包括:
步骤A,获取记录集R中的每条记录的第p位置和第q位置间的字符串Ci,以确定所述字符串Ci所对应的ID,记作IDi,其中,变量p初始值为0,变量q的初始值为k-1;
步骤B,获取第p位置和第q位置间的字符串Ci对应的第一变量H,记作Hi,该Hi用于指向第p位置和第q位置间的所述字符串Ci;
步骤C,获取第p位置和第q位置间的字符串Ci对应的第二变量N,记作Ni,该Ni用于指向第p+1位置和第q+1位置间的字符串Ci+1;
步骤D,判断KV集合中是否存在字符串Cj与所述字符串Ci相同,若不存在,则将所述Ci、IDi、Hi和Ni添加到所述KV集合中,若存在,则将所述IDi、Hi和Ni添加到所述KV集合中Cj对应的value中,其中,所述KV集合的key值为长度为k的子字符串C,value值为长度为k的子字符串C对应的ID、第一变量H和第二变量N,所述KV集合初始值为空;
步骤E,判断变量Parent是否为null,若是,则将所述变量Parent指向所述KV集合中字符串Ci到所述字符串Ci对应的所述IDi、Hi和Ni的映射关系;若不是,则取出所述变量Parent指向的子字符串C到该子字符串C对应的ID、第一变量H和第二变量N的映射关系,并令该第二变量N指向IDi,其中,变量Parent用于指向子字符串C到与该子字符串C对应的ID、第一变量H和第二变量N的映射关系,所述变量Parent的初始值为null;
步骤F,p=p+1,q=q+1;
执行上述步骤A至步骤F,直至q>s,将得到的KV集合作为第二索引表,其中,s为记录集中每条记录的长度。
4.根据权利要求1至3中任一项所述的方法,其特征在于,接收用户输入的信息,并将接收到的信息的字符串U分解为长度为k的输入子字符串的步骤包括:
判断接收的信息的字符串U的长度是否大于或等于k,若不是,则继续接收输入的信息直至接收的信息的字符串U长度大于或等于k;
若接收的信息的字符串U长度大于或等于k,则将字符串U分解为长度为k的输入子字符串,并根据分解得到的所述长度为k的输入子字符串之间的关联关系进行排序,记作C1,C2…Cn。
5.根据权利要求4所述的方法,其特征在于,在索引集中查找与分解得到的所述长度为k的输入子字符串对应的结果的步骤包括:
在所述第二索引表中查找分解字符串U得到的所述长度为k的输入子字符串C1对应的记录的ID、第一变量H和第二变量N,生成结果集N,记作{ID1 N1 H1,ID2 N2 H2…IDmNmHm};
判断结果集A中是否存在结果,若存在,则依次获取每个结果,并判断每个结果是否符合提示要求,若符合,将该结果作为所述长度为k的输入子字符串对应的结果。
6.根据权利要求5所述的方法,其特征在于,判断每个结果是否符合提示要求的步骤包括:
获取所述结果集A中的结果中的IDy、Ny、Hy;
执行以下步骤,直至P>n,则判断出当前结果符合提示要求:
步骤A,判断子字符串CP与Hy指向的子字符串后面的第P-1个字符串是否相等,其中,变量P初始值为2;
步骤B,若子字符串CP与Hy指向的子字符串后面的第P-1个字符串相等,则令P=P+1,若不相等,则判断出当前结果不符合提示要求。
7.根据权利要求5或6所述的方法,其特征在于,判断每个结果是否符合提示要求的步骤还包括:
判断符合提示要求的结果数是否达到提示信息项目数的上限,若判断出提示要求的结果数达到提示信息项目数的上限,则不再判断其它结果是否符合提示要求。
8.一种信息显示装置,其特征在于,包括:
分解单元,用于接收用户输入的信息,并将接收到的信息的字符串U分解为长度为k的输入子字符串;
查找单元,用于在索引集中查找与分解得到的所述长度为k的输入子字符串对应的结果,其中,所述索引集中包含记录集R的每条记录中长度为k的子字符串与该记录之间的映射关系及该记录中各个所述长度为k的子字符串之间的关联关系,其中,k为正整数;
显示单元,用于根据查找到的结果进行信息显示,其中,显示的信息包括查找到的与所述输入子字符串对应的结果所属的记录。
9.根据权利要求8所述的装置,其特征在于,还包括:创建单元,用于在接收用户输入的信息之前,创建索引集,其中,所述索引集包括第一索引表和第二索引表,所述第一索引表中包含标识ID与记录集中的记录之间的映射关系,所述第二索引表中包含记录集R的每条记录中长度为k的子字符串与该记录之间的映射关系及该记录中各个所述长度为k的子字符串之间的关联关系,所述创建单元包括:
确定模块,用于获取所述记录集R中长度为k的子字符串C,并确定所述长度为k的子字符串C所对应的ID;
生成模块,用于生成第二索引表,所述第二索引表中的每条索引项包含长度为k的子字符串C、长度为k的子字符串C所对应的ID、第一变量H和第二变量N,其中,所述第一变量H用于指向长度为k的子字符串C本身;所述第二变量N用于指向与所述子字符串C相关联的下一个长度为k的子字符串。
10.根据权利要求9所述的装置,其特征在于,所述生成模块包括:
第一获取子模块,用于获取记录集R中的每条记录的第p位置和第q位置间的字符串Ci,确定所述字符串Ci所对应的ID,记作IDi,其中,变量p初始值为0,变量q的初始值为k-1;
第二获取子模块,用于获取第p位置和第q位置间的字符串Ci对应的第一变量H,记作Hi,用于指向第p位置和第q位置间的所述字符串Ci;
第三获取子模块,用于获取第p位置和第q位置间的字符串Ci对应的第二变量N,记作Ni,用于指向第p+1位置和第q+1位置间的字符串Ci+1;
第一判断子模块,用于判断KV集合中是否存在字符串Cj与所述字符串Ci相同,若不存在,则将所述Ci、IDi、Hi和Ni添加到所述KV集合中,若存在,则将所述IDi、Hi和Ni添加到KV集合中Cj对应的value中,其中,所述KV集合的key值为长度为k的子字符串C,value值为长度为k的子字符串C对应的ID、第一变量H和第二变量N,所述KV集合初始值为空;
第二判断子模块,用于判断变量Parent是否为null,若是,则将所述变量Parent指向所述KV集合中字符串Ci到所述字符串Ci对应的所述IDi、所述Hi和所述Ni的映射关系;若不是,则取出所述变量Parent指向的子字符串C到该子字符串C对应的ID、第一变量H和第二变量N的映射关系,并令第二变量N指向IDi,其中,变量Parent用于指向子字符串C到与该子字符串C对应的ID、第一变量H和第二变量N的映射关系,所述变量Parent的初始值为null;
循环子模块,用于令p=p+1,q=q+1;
生成子模块,用于在q>s时,将得到的KV集合作为第二索引表,其中,s为记录集中每条记录的长度。
11.根据权利要求8至10中任一项所述的装置,其特征在于,所述分解单元包括:
第一判断模块,用于判断接收的信息的字符串U的长度是否大于或等于k,若不是,则继续接收输入的信息直至接收的信息的字符串U长度大于或等于k;
分解模块,用于在所述第一判断模块判断出接收的信息的字符串U长度大于或等于k时,将字符串U分解为长度为k的子字符串,并根据分解得到的所述长度为k的输入子字符串之间的关联关系进行排序,记作C1,C2…Cn。
12.根据权利要求11所述的装置,其特征在于,所述查找单元包括:
查找模块,用于在所述第二索引表中查找分解字符串U得到的所述长度为k的输入子字符串C1对应的记录的ID、第一变量H和第二变量N,生成结果集A,记作{ID1 N1H1,ID2 N2 H2…IDm Nm Hm};
第二判断模块,用于判断结果集A中是否存在结果;
第三判断模块,用于在所述第二判断模块判断出结果集A中存在结果时,依次获取每个结果,并判断每个结果是否符合提示要求;
提示模块,用于在所述第三判断模块判断出结果符合提示要求时,将该结果作为所述长度为k的输入子字符串对应的结果。
13.根据权利要求12所述的装置,其特征在于,所述第三判断模块包括:
获取子模块,用于获取所述结果集A中的结果中的IDy、Ny、Hy;
第三判断子模块,用于执行以下步骤,直至P>n,则判断出当前结果符合提示要求:
步骤A,判断子字符串CP与Hy指向的子字符串后面的第P-1个字符串是否相等,其中,变量P初始值为2;
步骤B,若子字符串CP与Ny指向的子字符串相等,则令P=P+1,若不相等,则判断出当前结果不符合提示要求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210434835.9A CN103793440B (zh) | 2012-11-02 | 2012-11-02 | 信息显示方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210434835.9A CN103793440B (zh) | 2012-11-02 | 2012-11-02 | 信息显示方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103793440A true CN103793440A (zh) | 2014-05-14 |
CN103793440B CN103793440B (zh) | 2018-03-27 |
Family
ID=50669117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210434835.9A Active CN103793440B (zh) | 2012-11-02 | 2012-11-02 | 信息显示方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103793440B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110245330A (zh) * | 2018-03-09 | 2019-09-17 | 腾讯科技(深圳)有限公司 | 字符序列匹配方法、实现匹配的预处理方法和装置 |
CN111294275A (zh) * | 2020-02-26 | 2020-06-16 | 上海云鱼智能科技有限公司 | 一种im工具的用户信息索引方法、装置、服务器及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101576929A (zh) * | 2009-06-16 | 2009-11-11 | 程治永 | 一种快速词条提示的实现方法 |
CN101876981A (zh) * | 2009-04-29 | 2010-11-03 | 阿里巴巴集团控股有限公司 | 一种构建知识库的方法及装置 |
CN101944086A (zh) * | 2009-07-10 | 2011-01-12 | 华中科技大学 | 全字索引词典 |
US7996369B2 (en) * | 2008-11-14 | 2011-08-09 | The Regents Of The University Of California | Method and apparatus for improving performance of approximate string queries using variable length high-quality grams |
US20120259862A1 (en) * | 2011-04-08 | 2012-10-11 | Younghoon Kim | Method and apparatus for processing A query |
-
2012
- 2012-11-02 CN CN201210434835.9A patent/CN103793440B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7996369B2 (en) * | 2008-11-14 | 2011-08-09 | The Regents Of The University Of California | Method and apparatus for improving performance of approximate string queries using variable length high-quality grams |
CN101876981A (zh) * | 2009-04-29 | 2010-11-03 | 阿里巴巴集团控股有限公司 | 一种构建知识库的方法及装置 |
CN101576929A (zh) * | 2009-06-16 | 2009-11-11 | 程治永 | 一种快速词条提示的实现方法 |
CN101944086A (zh) * | 2009-07-10 | 2011-01-12 | 华中科技大学 | 全字索引词典 |
US20120259862A1 (en) * | 2011-04-08 | 2012-10-11 | Younghoon Kim | Method and apparatus for processing A query |
Non-Patent Citations (4)
Title |
---|
ALEXANDER BEHM1 ET AL: ""Space-Constrained Gram-Based Indexing for Efficient Approximate String Search"", 《IEEE INTERNATIONAL CONFERENCE ON DATA ENGINEERING》 * |
刘洪磊 等: ""支持局部最优化匹配的近似子串查询算法"", 《JOURNAL OF FRONTIERS OF COMPUTER SCIENCE AND TECHNOLOGY》 * |
李文 等: ""基于n-gram的字符串分割技术的算法实现"", 《计算机与现代化》 * |
李文: ""基于关键字的模糊查询技术的研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110245330A (zh) * | 2018-03-09 | 2019-09-17 | 腾讯科技(深圳)有限公司 | 字符序列匹配方法、实现匹配的预处理方法和装置 |
CN111294275A (zh) * | 2020-02-26 | 2020-06-16 | 上海云鱼智能科技有限公司 | 一种im工具的用户信息索引方法、装置、服务器及存储介质 |
CN111294275B (zh) * | 2020-02-26 | 2022-10-14 | 上海云鱼智能科技有限公司 | 一种im工具的用户信息索引方法、装置、服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103793440B (zh) | 2018-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107590214B (zh) | 搜索关键词的推荐方法、装置及电子设备 | |
US8150823B2 (en) | Private searching on a public search engine | |
CN111488740B (zh) | 一种因果关系的判别方法、装置、电子设备及存储介质 | |
WO2012030411A1 (en) | Method for classification of objects in a graph data stream | |
CN103902535A (zh) | 获取联想词的方法、装置及系统 | |
CN104933100A (zh) | 关键词推荐方法和装置 | |
CN102915373A (zh) | 一种数据存储方法和装置 | |
CN111460289B (zh) | 新闻资讯的推送方法和装置 | |
Houbraken et al. | The Index-based Subgraph Matching Algorithm with General Symmetries (ISMAGS): exploiting symmetry for faster subgraph enumeration | |
CN104933171B (zh) | 兴趣点数据关联方法和装置 | |
CN103534696A (zh) | 针对口语语言理解中的域检测利用查询点击记录 | |
CN103077254A (zh) | 网页获取方法和装置 | |
CN104036003A (zh) | 搜索结果整合方法和装置 | |
WO2014176182A1 (en) | Auto-completion of partial line pattern | |
CN111756832B (zh) | 推送信息的方法、装置、电子设备及计算机可读存储介质 | |
CN105786851A (zh) | 问答知识库的构建方法、提供搜索的方法及装置 | |
CN110795456B (zh) | 图谱的查询方法、装置、计算机设备以及存储介质 | |
CN109241360B (zh) | 组合字符串的匹配方法及装置和电子设备 | |
CN105447004A (zh) | 查询推荐词的挖掘、相关查询方法及装置 | |
CN105302827A (zh) | 一种事件的搜索方法和设备 | |
Kim et al. | IDAR: Fast supergraph search using DAG integration | |
CN103793440A (zh) | 信息显示方法和装置 | |
CN110532528B (zh) | 基于随机游走的书籍相似度计算方法及电子设备 | |
CN103124273A (zh) | 基于用户行为分析的路径倒排表建立、匹配方法及系统 | |
US9542457B1 (en) | Methods for displaying object history information |
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: 1194497 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |