CN101551820B - 兴趣点属性的索引数据库的生成方法和装置 - Google Patents
兴趣点属性的索引数据库的生成方法和装置 Download PDFInfo
- Publication number
- CN101551820B CN101551820B CN2009100844080A CN200910084408A CN101551820B CN 101551820 B CN101551820 B CN 101551820B CN 2009100844080 A CN2009100844080 A CN 2009100844080A CN 200910084408 A CN200910084408 A CN 200910084408A CN 101551820 B CN101551820 B CN 101551820B
- Authority
- CN
- China
- Prior art keywords
- interest
- points
- text unit
- interest attribute
- index record
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种兴趣点属性的索引数据库的生成方法和装置,涉及数据库领域,为解决现有技术中索引数据库的空间开销比较大的问题而发明。所述方法包括:统计兴趣点属性中出现的不同文字单元;获取文字单元的编码;查找包含文字单元的兴趣点属性以及文字单元在兴趣点属性中的位置;根据兴趣点属性对应的兴趣点编号之间差值的大小以及文字单元在兴趣点属性中的位置,生成文字单元的索引记录列表;根据文字单元的索引记录列表的长度,生成文字单元索引记录列表的地址信息;组合文字单元的编码、文字单元的索引记录列表、文字单元的索引记录列表的地址信息,生成兴趣点属性的索引数据库。本发明能够有效减少兴趣点属性的索引数据库的存储空间。
Description
技术领域
本发明涉及数据库领域,特别是指一种兴趣点属性的索引数据库的生成方法和装置。
背景技术
现有技术中,为了提高对兴趣点数据库的检索性能,采用倒排索引技术建立索引机制。兴趣点(POI,Point of Interest)是导航电子地图上有特定位置和属性的点位。兴趣点数据库,则是管理大量兴趣点的属性的系统。兴趣点数据库有一个相应的索引数据库,为兴趣点索引数据库。索引是海量数据库不可缺少的,这是因为索引从某种意义上是一种将原数据库按检索要求排序后的数据库,它的存在能够大大提高检索的效率。兴趣点属性可以为兴趣点的名称、地址信息等。兴趣点属性由文字单元组成,文字单元可以为汉字或拼音。也就是说,兴趣点属性的表示方法可以分为两种,一种以是以汉字为主的形式表示,同时可以包括少量字母、数字、符号等,我们称其为汉字属性,例如兴趣点1:{编号:100,名称:“东方商厦A”},其中“东”、“方”、“A”为最小组成元素。另一种以拼音的形式表示,同时可以包括少量字母、数字、符号等,我们称其为拼音属性,例如兴趣点1:{编号:100,名称:“dong fang shang sha A”},其中“dong”、“fang”、“A”为最小组成元素。
以下描述采用倒排技术创建兴趣点属性的索引数据库的方法。通常仅知道汉字在哪些兴趣点中出现还不够,还需要知道汉字在兴趣点中出现的次数和出现的位置,索引结构如下:
关键字:{兴趣点1编号,出现频率,[位置1,位置2,...]},
{兴趣点2编号,出现频率,[位置1,位置2,...]},...
假设有三个兴趣点,其编号和兴趣点名称如下:
兴趣点1:{编号:100,名称:“东方商厦”}
兴趣点2:(编号:120,名称:“浦东新区东方路”)
兴趣点3:(编号:150,名称:“浦东新区东明路”)
按照前面介绍的索引结构,相应建立的倒排索引如下:
“东”:{100,1,[0]},{120,2,[1,4]},{150,2,[1,4]}
“方”:{100,1,[1]},{120,1,[5]}
“商”:{100,1,[2]}
“厦”:{100,1,[3]}
“浦”:{120,1,[0]},{150,1,[0]}
“新”:{120,1,[2]},{150,1,[2]}
“区”:{120,1,[3]},{150,1,[3]}
“明”:{150,1,[5]}
“路”:{120,1,[6]},{150,1,[6]}
以下描述倒排表检索技术。检索时,假设待查汉字串为“东方路”,首先通过汉字列表定位各汉字的索引数据,然后对数据进行分析。
“东”的索引数据中含有兴趣点编号为{100,120,150};“方”的索引数据中含有兴趣点编号为{100,120};“路”的索引数据中含有兴趣点编号为{120,150}。取交集后,只有兴趣点编号为120的记录符合条件。
“东”在兴趣点编号为120的记录中的位置为[1,4],其中位置“4”与“方”在兴趣点编号为120的记录中的位置“5”的差值刚好是汉字“东”的长度。同样“方”和“路”在兴趣点编号为120的记录中的位置差值刚好是汉字“方”的长度。因此兴趣点编号120(其名称为“浦东新区东方路”)为一个命中兴趣点。
以上可知,倒排表模型创建索引的速度较快,可以解决兴趣点属性的高效检索功能。但是,倒排索引结构包括兴趣点编号,兴趣点名称索引数据库需要存储大规模的文本信息,特别是需要存储兴趣点名称的位置信息,空间开销也比较大。
发明内容
本发明要解决的技术问题是提供一种减少空间开销的兴趣点属性的索引数据库的生成方法和装置。
为解决上述技术问题,本发明的实施例提供技术方案如下:
一方面,提供一种兴趣点属性的索引数据库的生成方法,包括:
统计所述兴趣点属性中出现的不同文字单元;
获取所述文字单元的编码;
查找包含所述文字单元的兴趣点属性以及所述文字单元在所述兴趣点属性中的位置;
根据所述兴趣点属性对应的兴趣点编号之间差值的大小以及所述文字单元在所述兴趣点属性中的位置,生成所述文字单元的索引记录列表;
根据所述文字单元的索引记录列表的长度,生成所述文字单元索引记录列表的地址信息;
组合所述文字单元的编码、所述文字单元的索引记录列表、所述文字单元的索引记录列表的地址信息,生成所述兴趣点属性的索引数据库。
所述根据所述兴趣点属性对应的兴趣点编号之间差值的大小以及所述文字单元在所述兴趣点属性中的位置,生成所述文字单元的索引记录列表的步骤包括:
依次获取包含所述文字单元的兴趣点属性作为当前兴趣点属性;
判断所述文字单元在当前兴趣点属性中是否为第一次出现,且所述当前兴趣点属性是否为包括所述文字单元的兴趣点编号最小的兴趣点属性,生成判断结果;
根据所述判断结果,生成所述文字单元的索引记录;
组合所述文字单元的索引记录,生成所述文字单元的索引记录列表。
所述根据所述判断结果,生成所述文字单元的索引记录的步骤包括:
当所述判断结果为:所述文字单元在所述当前兴趣点属性中为第一次出现,且所述当前兴趣点属性为包括所述文字单元的兴趣点编号最小的兴趣点属性时,生成的所述文字单元的索引记录包括:第一索引记录类型标识和所述当前兴趣点编号以及所述文字单元在所述当前兴趣点属性的位置;
当所述判断结果为:所述文字单元在所述当前兴趣点属性中不是第一次出现,生成的所述文字单元的索引记录包括:第二索引记录类型标识、所述文字单元在所述当前兴趣点属性的位置;
当所述判断结果为:所述文字单元在所述当前兴趣点属性中为第一次出现,且所述当前兴趣点属性不是包括所述文字单元的兴趣点编号最小的兴趣点属性时,则计算所述当前兴趣点编号与上一条兴趣点编号之间的差值,根据所述差值的大小选择相应字节长度的索引记录类型,生成所述文字单元的索引记录。
所述根据所述差值的大小选择相应字节长度的索引记录类型,生成所述文字单元的索引记录的步骤具体为:
当所述文字单元的当前兴趣点编号与上一条兴趣点编号之间的差值为大于零且小于预定值时,所述文字单元的索引记录包括:第三索引记录类型标识、所述差值、所述文字单元在所述当前兴趣点属性的位置;
当所述文字单元的当前兴趣点编号与所述上一条兴趣点编号之间的差值大于或等于所述预定值,所述文字单元的索引记录包括:第四索引记录类型标识、所述当前兴趣点编号、所述文字单元在所述当前兴趣点属性的位置。
所述查找包含所述文字单元的兴趣点属性以及所述文字单元在所述兴趣点属性中的位置的步骤之前,还包括:对所述文字单元的编码进行排序;
所述查找包含所述文字单元的兴趣点属性以及所述文字单元在所述兴趣点属性中的位置的步骤具体为:
依次查找包含所述文字单元的兴趣点属性以及所述文字单元在所述兴趣点属性中的位置。
所述文字单元为汉字或拼音。
当所述文字单元为汉字时,所述获取所述文字单元的编码的步骤具体为:
按照汉字编码方式,获得所述汉字的编码;或
对所述汉字进行顺序编号,将所述汉字的编号作为所述汉字的编码。
当所述文字单元为拼音时,所述获取所述文字单元的编码的步骤具体为:
对所述拼音进行顺序编号,将所述拼音的编号作为所述拼音的编码。
另一方面,提供一种兴趣点属性的索引数据库的生成装置,包括:
统计单元,用于统计所述兴趣点属性中出现的不同文字单元;
获取单元,用于获取所述文字单元的编码;
查找单元,用于查找包含所述文字单元的兴趣点属性以及所述文字单元在所述兴趣点属性中的位置;
索引记录列表生成单元,用于根据所述兴趣点属性对应的兴趣点编号之间差值的大小以及所述文字单元在所述兴趣点属性中的位置,生成所述文字单元的索引记录列表;
地址信息生成单元,用于根据所述文字单元的索引记录列表的长度,生成所述文字单元的索引记录列表的地址信息;
组合单元,用于组合所述文字单元的编码、所述文字单元的索引记录列表、所述文字单元的索引记录列表的地址信息,生成所述兴趣点属性的索引数据库。
所述的兴趣点属性的索引数据库的生成装置,还包括:排序单元,用于对所述文字单元的编码进行排序;
所述查找单元依次查找包含所述文字单元的兴趣点属性以及所述文字单元在所述兴趣点属性中的位置。
本发明的实施例具有以下有益效果:
上述方案中,由于索引记录列表是根据兴趣点编号之间的差值生成的,兴趣点编号之间的差值比兴趣点编号的数值要小,因此兴趣点编号之间的差值占用的字节比兴趣点编号占用的字节要少,因此能够减少索引数据库的空间开销。
附图说明
图1为本发明所述的兴趣点属性的索引数据库的生成方法的一实施例的流程示意图;
图2为本发明所述的兴趣点属性的索引数据库的生成方法的另一实施例的流程示意图;
图3为本发明所述的兴趣点属性的索引数据库的生成方法的另一实施例的流程示意图;
图4为本发明所述的兴趣点属性的索引数据库的生成方法的应用场景的流程示意图;
图5为图4所示的应用场景中步骤41的流程示意图;
图6为图4所示的应用场景中步骤42的流程示意图;
图7为图4所示的应用场景中兴趣点属性的索引数据库的结构图;
图8为图4所示的应用场景中步骤43的流程示意图;
图9为图4所示的应用场景中将索引记录转换为类型1的示意图;
图10为类型1的索引记录的数据结构示意图;
图11为图4所示的应用场景中将索引记录转换为类型2的示意图;
图12为类型2的索引记录的数据结构示意图;
图13为图4所示的应用场景中将索引记录转换为类型3的示意图;
图14为类型3的索引记录的数据结构示意图;
图15为图4所示的应用场景中将索引记录转换为类型4的示意图;
图16为类型4的索引记录的数据结构示意图;
图17为图4所示的应用场景中步骤44的流程示意图;
图18为图4所示的应用场景中步骤45的流程示意图;
图19为本发明所述的兴趣点属性的索引数据库的生成装置的一实施例的结构示意图;
图20为本发明所述的兴趣点属性的索引数据库的生成装置的另一实施例的结构示意图。
具体实施方式
为使本发明的实施例要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
本发明的实施例针对现有技术中兴趣点属性的索引数据库的空间开销比较大的问题,提供一种兴趣点属性的索引数据库的生成方法和装置。
如图1所示,为本发明的兴趣点属性的索引数据库的生成方法的一实施例,包括:
步骤11,统计所述兴趣点属性中出现的不同文字单元。当同一个文字单元在同一兴趣点属性中再次出现,则不再统计,当同一个文字单元在不同兴趣点属性中再次出现,也不再统计。文字单元可以为汉字或拼音。例如,兴趣点1:{编号:100,名称:“东方商厦”}中,文字单元分别为“东”“方”“商”“厦”。
步骤12,获取所述文字单元的编码。
步骤13,查找包含所述文字单元的兴趣点属性以及所述文字单元在所述兴趣点属性中的位置;例如,兴趣点1:{编号:100,名称:“东方商厦”}中,“东”的兴趣点编号为100,在兴趣点属性中的位置为“0”,而“方”在兴趣点1的位置为“1”,以此类推。
步骤14,根据所述兴趣点属性对应的兴趣点编号之间差值的大小以及所述文字单元在所述兴趣点属性中的位置,生成所述文字单元的索引记录列表。
步骤15,根据所述文字单元的索引记录列表的长度,生成所述文字单元的索引记录列表的地址信息。
步骤16,组合所述文字单元的编码、所述文字单元的索引记录列表、所述文字单元的索引记录列表的地址信息,生成所述兴趣点属性的索引数据库。
上述方案中,由于文字单元的索引记录列表是根据兴趣点编号之间的差值生成的,兴趣点编号之间的差值比兴趣点编号的数值要小,因此兴趣点编号之间的差值占用的字节比兴趣点编号占用的字节要少,因此能够减少兴趣点属性的索引数据库的空间开销。
如图2所示,为兴趣点属性的索引数据库的生成方法另一实施例,该实施例以兴趣点属性为汉字属性为例进行描述。所述方法包括:
步骤21,统计所述兴趣点属性中出现的不同汉字。当同一个汉字在同一兴趣点属性中再次出现,则不再统计。当同一个汉字在不同兴趣点属性中再次出现,也不再统计。本领域技术人员可以明白,对其他少量的字母、数字、符号也可以统计,进行索引。此实施例中,为了减少数据库的存储空间,对其他少量的字母、数字、符号可以不统计,不进行索引。例如,兴趣点1:{编号:100,名称:“东方商厦A”}和兴趣点2:{编号:101,名称:“东方喜羊羊”}中,统计的不同汉字分别为“东”、“方”、“商”、“厦”“喜”“羊”。对“A”可以不进行索引。由于兴趣点2中的“东”、“方”已经在兴趣点1中出现过,因此不进行第二次统计,同理,“羊”在兴趣点2中出现了两次,因此只统计一次。
步骤22,获取所述汉字的编码。具体来讲,可以按照GB2312、GBK、Unicode或UTF-8等汉字编码方式,对所述汉字进行编码。也可以为,对所述汉字进行编号,将所述汉字的编号作为所述汉字的编码。例如,分别将“东”“方”“商”“厦”编号为:1、2、3、4,将1、2、3、4分别作为“东”“方”“商”“厦”的编码。这种编号的编码方式比上述的汉字编码方式占用的存储空间小。
步骤23,对所述汉字的编码进行排序。具体来讲,可以按照GB2312、GBK、Unicode、UTF-8等汉字编码顺序,对所述汉字的编码进行排序。也可以为,按照汉字编号大小顺序,对所述汉字的编码进行排序。
步骤24,依次查找包含所述汉字的兴趣点属性以及所述汉字在所述兴趣点属性中的位置。例如,例如兴趣点1:{编号:100,名称:“东方商厦A”}中,汉字“方”的位置为2。
步骤25,依次获取包含所述汉字的兴趣点属性作为当前兴趣点属性。
步骤26,判断所述汉字在当前兴趣点属性中是否为第一次出现,且所述当前兴趣点属性是否为包括所述汉字的兴趣点编号最小的记录,生成判断结果;根据不同判断结果,分别转向步骤27、步骤28、和步骤29。
步骤27,当所述判断结果为第一判断结果:所述汉字在所述当前兴趣点属性中为第一次出现,且所述当前兴趣点属性为包括所述汉字的兴趣点编号最小的记录时,生成所述汉字的索引记录包括:第一索引记录类型标识和所述当前兴趣点编号以及所述汉字在所述当前兴趣点属性的位置。索引记录类型表示汉字的索引记录的字节长度和格式,汉字的索引记录的字节长度根据当前兴趣点编号的大小而确定。如果当前兴趣点编号的数值比较大时,可以生成字节长度长的索引记录类型,如果当前兴趣点编号的数值比较小时,可以生成字节长度短的索引记录类型。例如,汉字的索引记录为:{第一索引记录类型标识“111”,当前兴趣点编号,汉字在当前兴趣点属性的位置}。其中,第一索引记录类型标识、兴趣点编号、汉字在当前兴趣点属性的位置之间的顺序可以调整,然后,转向步骤210。
步骤28,当所述判断结果为第二判断结果:所述汉字在所述当前兴趣点属性中不是第一次出现,生成的所述汉字的索引记录包括:第二索引记录类型标识、所述汉字在所述当前兴趣点属性的位置。然后,转向步骤210。
步骤29,当所述判断结果为第三判断结果:所述汉字在所述当前兴趣点属性中为第一次出现,且所述当前兴趣点属性不是包括所述汉字的兴趣点编号最小的记录时,则计算所述当前兴趣点编号与上一条兴趣点编号之间的差值,根据所述差值的大小选择相应字节长度的索引记录类型,生成所述汉字的索引记录;索引记录类型表示汉字的索引记录的字节长度和格式,例如,汉字的索引记录为:{索引记录类型标识“10”,汉字在当前兴趣点属性的位置}。其中,第二索引记录类型标识、汉字在当前兴趣点属性的位置之间的顺序可以调整。该汉字的索引记录中,省略了兴趣点编号,因此,节省了索引记录占用的空间。然后,转向步骤210。
步骤29中,当所述汉字的当前兴趣点编号与上一条兴趣点编号之间的差值为大于零且小于预定值时,所述汉字的索引记录包括:第三索引记录类型标识、所述差值、所述汉字在所述当前兴趣点属性的位置。索引记录类型表示汉字的索引记录的字节长度和格式,所述汉字的索引记录的字节长度根据所述差值的大小而确定。如果差值比较大时,可以生成字节长度长的索引记录类型,如果差值比较小时,可以生成字节长度短的索引记录类型。例如,差值位于差值区间[1,511]内时,汉字的索引记录的长度为1字节,包括:{索引记录类型标识“0”,当前兴趣点编号与当前兴趣点的上一条兴趣点编号之间的差值,汉字在当前兴趣点属性的位置}。其中,索引记录类型标识、兴趣点编号之间的差值、汉字在当前兴趣点属性的位置之间的顺序可以调整。差值位于差值区间[512,32767]内时,汉字的索引记录的长度为3字节,包括:{索引记录类型标识“110”,当前兴趣点编号与当前兴趣点的上一条兴趣点编号之间的差值,汉字在当前兴趣点属性的位置}。该汉字的索引记录中,兴趣点编号之间的差值占用的字节空间小于兴趣点编号占用的字节空间,因此,节省了索引记录占用的空间。
当所述汉字的当前兴趣点编号与所述上一条兴趣点编号之间的差值大于或等于所述预定值,所述汉字的索引记录包括:第四索引记录类型标识、所述当前兴趣点编号、所述汉字在所述当前兴趣点属性的位置。索引记录类型表示汉字的索引记录的字节长度和索引记录的格式,汉字的索引记录的字节长度根据当前兴趣点编号的大小而确定。如果当前兴趣点编号的数值比较大时,可以生成字节长度长的索引记录类型,如果当前兴趣点编号的数值比较小时,可以生成字节长度短的索引记录类型。例如,汉字的索引记录为:{索引记录类型标识“111”,当前兴趣点编号,汉字在当前兴趣点属性的位置}。本发明实施例中的索引记录类型标识可以采用其他形式,根据实际情况确定。
步骤210,组合所述汉字的索引记录,生成所述汉字的索引记录列表。
步骤211,根据所述汉字的索引记录列表的长度,生成所述汉字的索引记录列表的地址信息。
步骤212,组合所述汉字的编码、所述汉字的索引记录列表、所述汉字的索引记录列表的地址信息,生成所述兴趣点属性的索引数据库。
如图3所示,为兴趣点属性的索引数据库的生成方法另一实施例,该实施例以兴趣点属性为拼音属性为例进行描述,兴趣点属性可为兴趣点名称拼音、地址拼音等。所述方法包括:
步骤31,统计所述兴趣点属性中出现的不同拼音。当同一个拼音在同一兴趣点属性中再次出现,则不再统计。当同一个拼音在不同兴趣点属性中再次出现,也不再统计。本领域技术人员可以明白,对其他少量的字母、数字、符号也可以统计,进行索引。此实施例中,为了减少数据库的存储空间,对其他少量的字母、数字、符号可以不统计,不进行索引。例如,例如兴趣点1:{编号:100,名称:“dong fang shang sha A”}和兴趣点2:{编号:101,名称:“dongfang xi yang yang”}中,统计的不同拼音分别为“dong”、“fang”、“shang”、“sha”、“xi”、“yang”。对“A”可以不进行索引。由于兴趣点2中的“dong”、“fang”已经在兴趣点1中出现过,因此不进行第二次统计,同理,“yang”在兴趣点2中出现了两次,因此只统计一次。
步骤32,获取所述拼音的编码。具体来讲,对所述拼音进行编号,将所述拼音的编号作为所述拼音的编码。在获取文字单元的编码时,分别将“dong”“fang”“shang”“sha”编号为:1、2、3、4,将1、2、3、4分别作为“dong”“fang”“shang”“sha”的编码。
步骤33,依次查找包含所述拼音的兴趣点属性以及所述拼音在所述兴趣点属性中的位置。例如,兴趣点1:{编号:100,名称:“dong fang shang sha”}为包含拼音“fang”的兴趣点属性,以及拼音“fang”所述兴趣点属性中的位置为2。
步骤34,依次获取包含所述拼音的兴趣点属性作为当前兴趣点属性。
步骤35,判断所述拼音在当前兴趣点属性中是否为第一次出现,且所述当前兴趣点属性是否为包括所述拼音的编号最小的兴趣点记录,生成判断结果;根据不同判断结果,分别转向步骤36、步骤37、和步骤38。
步骤36,当所述判断结果为第一判断结果:所述拼音在所述当前兴趣点属性中为第一次出现,且所述当前兴趣点属性为包括所述拼音的编号最小的兴趣点记录时,根据当前兴趣点编号值的大小选择相应字节长度的索引记录类型,生成所述拼音的索引记录,所述拼音的索引记录包括:第一索引记录类型标识和所述当前兴趣点编号以及所述拼音在所述当前兴趣点属性的位置。索引记录类型表示拼音的索引记录的字节长度和格式,拼音的索引记录的字节长度根据当前兴趣点编号的大小而确定。如果当前兴趣点编号的数值比较大时,可以生成字节长度长的索引记录类型,如果当前兴趣点编号的数值比较小时,可以生成字节长度短的索引记录类型。例如,拼音的索引记录为:{第一索引记录类型标识“111”,当前兴趣点编号,拼音在当前兴趣点属性的位置}。其中,第一索引记录类型标识、兴趣点编号、拼音在当前兴趣点属性的位置之间的顺序可以调整,然后,转向步骤39。
步骤37,当所述判断结果为第二判断结果:所述拼音在所述当前兴趣点属性中不是第一次出现,生成的所述拼音的索引记录包括:第二索引记录类型标识、所述拼音在所述当前兴趣点属性的位置。然后,转向步骤39。
步骤38,当所述判断结果为第三判断结果:所述拼音在所述当前兴趣点属性中为第一次出现,且所述当前兴趣点属性不是包括所述拼音的编号最小的兴趣点记录时,则计算所述当前兴趣点编号与上一条兴趣点编号之间的差值,根据所述差值的大小选择相应字节长度的索引记录类型,生成所述拼音的索引记录;索引记录类型表示拼音的索引记录的字节长度和格式,例如,拼音的索引记录为:{索引记录类型标识“10”,拼音在当前兴趣点属性的位置}。其中,第二索引记录类型标识、拼音在当前兴趣点属性的位置之间的顺序可以调整。该拼音的索引记录中,省略了兴趣点编号,因此,节省了索引记录占用的空间。然后,转向步骤39。
步骤38中,当所述拼音的当前兴趣点编号与上一条兴趣点编号之间的差值为大于零且小于预定值时,所述拼音的索引记录包括:第三索引记录类型标识、所述差值、所述拼音在所述当前兴趣点属性的位置。索引记录类型表示拼音的索引记录的字节长度和格式,所述拼音的索引记录的字节长度根据所述差值的大小而确定。如果差值比较大时,可以生成字节长度长的索引记录类型,如果差值比较小时,可以生成字节长度短的索引记录类型。例如,差值位于差值区间[1,511]内时,拼音的索引记录的长度为1字节,包括:{索引记录类型标识“0”,当前兴趣点编号与当前兴趣点的上一条兴趣点编号之间的差值,拼音在当前兴趣点属性的位置}。其中,索引记录类型标识、兴趣点编号之间的差值、拼音在当前兴趣点属性的位置之间的顺序可以调整。差值位于差值区间[512,32767]内时,拼音的索引记录的长度为3字节,包括:{索引记录类型标识“110”,当前兴趣点编号与当前兴趣点的上一条兴趣点编号之间的差值,拼音在当前兴趣点属性的位置}。该拼音的索引记录中,兴趣点编号之间的差值占用的字节空间小于兴趣点编号占用的字节空间,因此,节省了索引记录占用的空间。
当所述拼音的当前兴趣点编号与所述上一条兴趣点编号之间的差值大于或等于所述预定值,所述拼音的索引记录包括:第四索引记录类型标识、所述当前兴趣点编号、所述拼音在所述当前兴趣点属性的位置。索引记录类型表示拼音的索引记录的字节长度和索引记录的格式,拼音的索引记录的字节长度根据当前兴趣点编号的大小而确定。如果当前兴趣点编号的数值比较大时,可以生成字节长度长的索引记录类型,如果当前兴趣点编号的数值比较小时,可以生成字节长度短的索引记录类型。例如,拼音的索引记录为:{索引记录类型标识“111”,当前兴趣点编号,拼音在当前兴趣点属性的位置}。本发明实施例中的索引记录类型标识可以采用其他形式,根据实际情况确定。
步骤39,组合所述拼音的索引记录,生成所述拼音的索引记录列表。
步骤310,根据所述拼音的索引记录列表的长度,生成所述拼音的索引记录列表的地址信息。
步骤311,组合所述拼音的编码、所述拼音的索引记录列表、所述拼音的索引记录列表的地址信息,生成所述兴趣点属性的索引数据库。
以下结合图4至图18描述本发明兴趣点属性的索引数据库的生成方法的应用场景。
本应用场景中,对于兴趣点编号的最大赋值是23比特位,即不大于8388607。当兴趣点数据库中的兴趣点总数大于这个数时,需要对兴趣点数据库进行分表处理。以下描述针对兴趣点数据库中的兴趣点总数符合预设要求时的情景,即小于或等于8388607。兴趣点编号最大赋值也可以为其他比特位,根据实际需要确定。
如图4所示,本发明所述的兴趣点属性的索引数据库的生成方法包括:
步骤41,根据兴趣点属性生成“兴趣点索引数据库管理头”文件,包括:文字单元的索引个数、索引数据库长度、文字单元的编码以及文字单元索引记录列表的偏移地址;
步骤42,根据文字单元所在的兴趣点属性对应的兴趣点编号以及位置,生成定长的“文字单元索引记录列表”中间文件;
步骤43,根据定长的文字单元索引记录列表文件,生成变长的“文字单元索引记录列表”中间文件;
步骤44,根据变长的“文字单元索引记录列表”的字节长度,在“兴趣点索引数据库管理头”文件中补充文字单元索引记录列表的偏移地址信息;
步骤45,组合“兴趣点索引数据库管理头”、“文字单元索引记录列表”中间文件、生成兴趣点的索引数据库。
如图5所示,所述步骤41包括:
步骤411,统计兴趣点属性中出现的所有不同文字单元。
步骤412,对这些文字单元进行编码,生成文字单元的编码列表。
步骤413,对文字单元的编码列表进行排序。
步骤414,将文字单元的索引个数、文字单元编码列表写入“兴趣点索引数据库管理头”文件中,(其它字段,如索引数据库长度和文字单元索引记录列表的偏移地址信息暂时空缺不填),“兴趣点索引数据库管理头”文件的格式如图7所示。
如图6所示,所述步骤42中,包括如下步骤:
步骤421,从“兴趣点索引数据库管理头”文件中顺序选取一个文字单元;
步骤422,统计该文字单元在各兴趣点属性中的位置,按(兴趣点编号,位置)的索引结构,组成一条索引记录;
步骤423,将该文字单元的所有索引记录合并,得到索引记录列表中间文件,该中间文件的每条索引记录是定长的。
重复步骤421~步骤423的处理流程,直到所有文字单元的索引记录处理过程全部处理完毕。
如图8所示,所述步骤43中包括如下步骤:
步骤431,从所述步骤42得到的每个文字单元的索引记录列表中间文件,计算每条索引记录的兴趣点编号与上一条索引记录的兴趣点编号的差值;
步骤432,按步骤431计算得到兴趣点编号差值,将索引记录转换为四种不同长度的存储类型,并写入“文字单元索引记录列表”中间文件;
重复步骤431~步骤432的处理流程,直到所有文字单元的索引记录处理过程全部处理完毕。
转换原则如下:
情况1:文字单元的第一条索引记录,或者该条索引记录对应的兴趣点编号与上一条索引记录对应的兴趣点编号差值超过32767。如图9所示,将索引记录转换为类型1,如图10所示,长度为4字节,包括:{索引记录类型标识“111”,当前兴趣点编号,文字单元在当前兴趣点属性中的位置}。
情况2:一个文字单元在同一兴趣点属性中再次出现时,该索引记录的兴趣点编号和上一条索引记录的兴趣点编号相同,可以省略存储兴趣点编号差值,如图11所示,将索引记录转换为类型2,如图12所示,长度为1字节,包括:{索引记录类型标识“10”,文字单元在当前兴趣点属性中的位置}。
情况3:该条索引记录对应的兴趣点编号与上一条索引记录对应的兴趣点编号之间的差值区间为[1,511]。如图13所示,将索引记录转换为类型3,如图14所示,长度为2字节,包括:{索引记录类型标识“0”,当前兴趣点编号与当前兴趣点的上一条兴趣点编号之间的差值,文字单元在当前兴趣点属性中的位置}。
情况4:该条索引记录对应的兴趣点编号与上一条索引记录对应的兴趣点编号之间的差值区间为[512,32767]。索引记录类型表示文字单元的索引记录的字节长度,所述文字单元的索引记录的字节长度根据所述差值的大小而确定。如果差值比较大时,可以生成字节长度长的索引记录类型,如果差值比较小时,可以生成字节长度短的索引记录类型。如图15所示,将索引记录转换为类型4,如图16所示,长度为3字节,包括:{索引记录类型标识“110”,当前兴趣点编号与当前兴趣点的上一条兴趣点编号之间的差值,文字单元在当前兴趣点属性的位置}。这样,就将定长的索引记录列表转换为变长的索引记录列表。
如图17所示,所述步骤44中包括如下步骤:
步骤441,从“兴趣点索引数据库管理头”文件依次选取每一个文字单元;
步骤442,根据图7中可以得知,在“兴趣点索引数据库管理头”文件中,文字单元索引个数、索引数据库长度、文字单元的编码以及文字单元索引记录列表的偏移地址信息分别占用4个比特,如果当前文字单元是第1个文字单元,该文字单元的索引记录列表的偏移地址为8*(n+1),n为文字单元的总数量;
步骤443,如果当前文字单元不是第一个文字单元,该文字单元索引记录列表的偏移地址设为上一个文字单元索引记录列表的偏移地址加上一个文字单元的索引记录列表的长度;
步骤444,累加各个文字单元的索引记录列表的长度,写入“兴趣点索引数据库管理头”文件中“索引数据库长度”字段所在的位置。在该实施例中,8*(n+1)为“兴趣点索引数据库管理头”的文件长度。
如图18所示,所述步骤45包括如下步骤:
步骤451,打开“兴趣点索引数据库管理头”文件;
步骤452,按文字单元索引记录列表依次读取“文字单元索引记录列表”中间文件,合并到在“兴趣点索引数据库管理头”的文件尾;
重复步骤452的处理流程,直到所有的“文字单元索引记录列表”中间文件全部处理完毕。
本发明中,在文字单元的索引记录中省略了文字单元的出现频率字段,节省了索引记录的空间开销。由于兴趣点编号的差值变化范围非常广,采用变长方法存储索引记录。为描述变长索引记录采用的字节数,可将索引记录的开始若干位保留作为索引记录类型的标识。把索引记录中的兴趣点编号与文字单元的位置混合编码,将其合并为一个数,在保存的时候在索引记录中保存此混合编码。
上述索引记录的存储结构变动带来的好处在于,不需要另外建立独立的字段来保存文字单元在兴趣点的出现位置,而是利用一索引记录的一些字节来保存文字单元在兴趣点属性的位置信息。例如在兴趣点名称搜索引擎中,兴趣点的总条数大概在2000万左右,那么保存兴趣点的索引记录的兴趣点编号实际只需要26位就足够了。如果用32位的整型来保存1条索引记录,那么在兴趣点索引结构中,除兴趣点编号需要用到的26位外,可以利用剩余的6位来保存文字单元在兴趣点属性的位置信息。由于实际兴趣点名称数据中名称信息的长度很少大于64个字,因此利用6位来保存文字单元的位置信息基本能够满足兴趣点名称检索的需求。
如图19所示,为本发明所述的一种兴趣点属性的索引数据库的生成装置19,包括:
统计单元191,用于统计所述兴趣点属性中出现的不同文字单元;
获取单元192,用于获取所述文字单元的编码;
查找单元193,用于查找包含所述文字单元的兴趣点属性以及所述文字单元在所述兴趣点属性中的位置;
索引记录列表生成单元194,用于根据所述兴趣点属性对应的兴趣点编号之间差值的大小以及所述文字单元在所述兴趣点属性中的位置,生成所述文字单元的索引记录列表;
地址信息生成单元195,用于根据所述文字单元的索引记录列表的长度,生成所述文字单元的索引记录列表的地址信息;
组合单元196,用于组合所述文字单元的编码、所述文字单元的索引记录列表、所述文字单元的索引记录列表的地址信息,生成所述兴趣点属性的索引数据库。
上述方案中,由于文字单元的索引记录列表是根据兴趣点编号之间的差值生成的,兴趣点编号之间的差值比兴趣点编号的数值要小,因此兴趣点编号之间的差值占用的字节比兴趣点编号占用的字节要少,因此能够减少兴趣点属性的索引数据库的空间开销。
如图20所示,本发明所述的兴趣点属性的索引数据库的生成装置19,还包括:排序单元197,用于对所述文字单元的编码进行排序;
所述查找单元193查找包含所述文字单元的兴趣点属性以及所述文字单元在所述兴趣点属性中的位置。
所述索引记录列表生成单元194包括:
获取子单元1941,依次获取包含所述文字单元的兴趣点属性作为当前兴趣点属性;
判断子单元1942,判断所述文字单元在当前兴趣点属性中是否为第一次出现,且所述当前兴趣点属性是否为包括所述汉字的兴趣点编号最小的记录,生成判断结果;
索引记录生成子单元1943,根据所述判断结果,生成所述文字单元的索引记录;
组合子单元1944,组合所述文字单元的索引记录,生成所述文字单元的索引记录列表。
本发明记录文字单元的索引记录列表时,根据兴趣点编号之间的差值可灵活地采取不同的字节长度,不需要采用固定的字节长度,因此能够减少兴趣点属性的索引数据库的空间开销。
本发明基于倒排索引机制理论,提供一种针对兴趣点属性的索引模型,有益效果如下:
1)采用了变长记录存储方法,减少兴趣点名称索引空间的开销;
2)索引空间的减小可减少磁盘I/O次数,提高在资源受限的嵌入式设备上的可用性。
本发明的变长索引方法还可应用于兴趣点简拼索引、兴趣点分类索引压缩等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一移动终端的可读取存储介质中,该程序在执行时,包括如上述方法实施例的步骤,所述的存储介质等。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种兴趣点属性的索引数据库的生成方法,其特征在于,包括:
统计所述兴趣点属性中出现的不同文字单元;
获取所述文字单元的编码;
查找包含所述文字单元的兴趣点属性以及所述文字单元在所述兴趣点属性中的位置;
根据所述兴趣点属性对应的兴趣点编号之间差值的大小以及所述文字单元在所述兴趣点属性中的位置,生成所述文字单元的索引记录列表;
根据所述文字单元的索引记录列表的长度,生成所述文字单元索引记录列表的地址信息;
组合所述文字单元的编码、所述文字单元的索引记录列表、所述文字单元的索引记录列表的地址信息,生成所述兴趣点属性的索引数据库;
其中,所述根据所述兴趣点属性对应的兴趣点编号之间差值的大小以及所述文字单元在所述兴趣点属性中的位置,生成所述文字单元的索引记录列表的步骤包括:
依次获取包含所述文字单元的兴趣点属性作为当前兴趣点属性;
判断所述文字单元在当前兴趣点属性中是否为第一次出现,且所述当前兴趣点属性是否为包括所述文字单元的兴趣点编号最小的兴趣点属性,生成判断结果;
根据所述判断结果,生成所述文字单元的索引记录;
组合所述文字单元的索引记录,生成所述文字单元的索引记录列表。
2.根据权利要求1所述的兴趣点属性的索引数据库的生成方法,其特征在于,所述根据所述判断结果,生成所述文字单元的索引记录的步骤包括:
当所述判断结果为:所述文字单元在所述当前兴趣点属性中为第一次出现,且所述当前兴趣点属性为包括所述文字单元的兴趣点编号最小的兴趣点属性时,生成的所述文字单元的索引记录包括:第一索引记录类型标识和所述当前兴趣点编号以及所述文字单元在所述当前兴趣点属性的位置;
当所述判断结果为:所述文字单元在所述当前兴趣点属性中不是第一次出现,生成的所述文字单元的索引记录包括:第二索引记录类型标识、所述文字单元在所述当前兴趣点属性的位置;
当所述判断结果为:所述文字单元在所述当前兴趣点属性中为第一次出现,且所述当前兴趣点属性不是包括所述文字单元的兴趣点编号最小的兴趣点属性时,则计算所述当前兴趣点编号与上一条兴趣点编号之间的差值,根据所述差值的大小选择相应字节长度的索引记录类型,生成所述文字单元的索引记录。
3.根据权利要求2所述的兴趣点属性的索引数据库的生成方法,其特征在于,所述根据所述差值的大小选择相应字节长度的索引记录类型,生成所述文字单元的索引记录的步骤具体为:
当所述文字单元的当前兴趣点编号与上一条兴趣点编号之间的差值为大于零且小于预定值时,所述文字单元的索引记录包括:第三索引记录类型标识、所述差值、所述文字单元在所述当前兴趣点属性的位置;
当所述文字单元的当前兴趣点编号与所述上一条兴趣点编号之间的差值大于或等于所述预定值,所述文字单元的索引记录包括:第四索引记录类型标识、所述当前兴趣点编号、所述文字单元在所述当前兴趣点属性的位置。
4.根据权利要求1所述的兴趣点属性的索引数据库的生成方法,其特征在于,所述查找包含所述文字单元的兴趣点属性以及所述文字单元在所述兴趣点属性中的位置的步骤之前,还包括:对所述文字单元的编码进行排序;
所述查找包含所述文字单元的兴趣点属性以及所述文字单元在所述兴趣点属性中的位置的步骤具体为:依次查找包含所述文字单元的兴趣点属性以及所述文字单元在所述兴趣点属性中的位置。
5.根据权利要求1所述的兴趣点属性的索引数据库的生成方法,其特征在于,所述文字单元为汉字或拼音。
6.根据权利要求5所述的兴趣点属性的索引数据库的生成方法,其特征在于,当所述文字单元为汉字时,所述获取所述文字单元的编码的步骤具体为:
按照汉字编码方式,获得所述汉字的编码;或
对所述汉字进行顺序编号,将所述汉字的编号作为所述汉字的编码。
7.根据权利要求5所述的兴趣点属性的索引数据库的生成方法,其特征在于,当所述文字单元为拼音时,所述获取所述文字单元的编码的步骤具体为:
对所述拼音进行顺序编号,将所述拼音的编号作为所述拼音的编码。
8.一种兴趣点属性的索引数据库的生成装置,其特征在于,包括:
统计单元,用于统计所述兴趣点属性中出现的不同文字单元;
获取单元,用于获取所述文字单元的编码;
查找单元,用于查找包含所述文字单元的兴趣点属性以及所述文字单元在所述兴趣点属性中的位置;
索引记录列表生成单元,用于根据所述兴趣点属性对应的兴趣点编号之间差值的大小以及所述文字单元在所述兴趣点属性中的位置,生成所述文字单元的索引记录列表;具体为:依次获取包含所述文字单元的兴趣点属性作为当前兴趣点属性;判断所述文字单元在当前兴趣点属性中是否为第一次出现,且所述当前兴趣点属性是否为包括所述文字单元的兴趣点编号最小的兴趣点属性,生成判断结果;根据所述判断结果,生成所述文字单元的索引记录;组合所述文字单元的索引记录,生成所述文字单元的索引记录列表;
地址信息生成单元,用于根据所述文字单元的索引记录列表的长度,生成所述文字单元的索引记录列表的地址信息;
组合单元,用于组合所述文字单元的编码、所述文字单元的索引记录列表、所述文字单元的索引记录列表的地址信息,生成所述兴趣点属性的索引数据库。
9.根据权利要求8所述的兴趣点属性的索引数据库的生成装置,其特征在于,还包括:排序单元,用于对所述文字单元的编码进行排序;
所述查找单元依次查找包含所述文字单元的兴趣点属性以及所述文字单元在所述兴趣点属性中的位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100844080A CN101551820B (zh) | 2009-05-13 | 2009-05-13 | 兴趣点属性的索引数据库的生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100844080A CN101551820B (zh) | 2009-05-13 | 2009-05-13 | 兴趣点属性的索引数据库的生成方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101551820A CN101551820A (zh) | 2009-10-07 |
CN101551820B true CN101551820B (zh) | 2010-08-25 |
Family
ID=41156067
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100844080A Active CN101551820B (zh) | 2009-05-13 | 2009-05-13 | 兴趣点属性的索引数据库的生成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101551820B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110125B (zh) * | 2009-12-29 | 2013-09-18 | 比亚迪股份有限公司 | 根据汉字快速查找兴趣点的检索方法 |
CN102915311B (zh) * | 2011-08-03 | 2016-04-27 | 腾讯科技(深圳)有限公司 | 搜索方法及系统 |
CN103377210B (zh) * | 2012-04-19 | 2016-12-14 | 北京四维图新科技股份有限公司 | 建立增量型导航数据库的方法和对数据库进行更新的方法 |
CN103092964B (zh) * | 2013-01-22 | 2016-03-16 | 沈阳美行科技有限公司 | 一种导航设备的父子poi查询方法 |
CN105205153B (zh) * | 2015-09-24 | 2018-10-19 | 小米科技有限责任公司 | 文件存储方法和装置 |
CN110765331B (zh) * | 2019-07-08 | 2024-03-26 | 中国人民解放军战略支援部队信息工程大学 | 一种时空数据的检索方法及系统 |
CN115186087B (zh) * | 2022-07-01 | 2023-11-28 | 至本医疗科技(上海)有限公司 | 检索基因与肿瘤相关信息的方法、设备和计算机存储介质 |
-
2009
- 2009-05-13 CN CN2009100844080A patent/CN101551820B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101551820A (zh) | 2009-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101551820B (zh) | 兴趣点属性的索引数据库的生成方法和装置 | |
CN103150397B (zh) | 一种数据索引创建方法、数据检索方法和系统 | |
CN101315639A (zh) | 搜索方法及系统 | |
CN101571850A (zh) | 一种支持页面跳转功能的文本文档显示方法及装置 | |
CN100561482C (zh) | 一种嵌入式系统数据库的实现方法 | |
CN112307138B (zh) | 地域信息的存储和查询方法、系统与介质 | |
CN101493340B (zh) | 一种车辆导航系统中兴趣点信息的快速检索方法 | |
CN102831224A (zh) | 一种数据索引库的建立方法、搜索建议生成方法和装置 | |
CN100472526C (zh) | 一种数据存储方法、数据读取方法以及数据检索方法 | |
CN112597345A (zh) | 一种实验室数据自动采集与匹配方法 | |
CN103793468A (zh) | 数据存储方法和装置以及数据读取方法和装置 | |
CN106407221B (zh) | 地址数据检索方法及装置 | |
CN101539433A (zh) | 导航系统中拼音首字母加声调检索的方法及装置 | |
CN102192748B (zh) | 地图数据和导航设备 | |
CN102073682A (zh) | 一种基于编码方式的文档数据恢复系统及其快速恢复方法 | |
CN109446198B (zh) | 一种基于双数组的trie树节点压缩方法及装置 | |
CN105740374A (zh) | 基于分布式内存的三维平台数据模糊查询方法 | |
CN101436203B (zh) | 一种记录索引方法及装置 | |
CN115809248A (zh) | 数据查询方法和装置以及存储介质 | |
CN115510059A (zh) | 一种基于b+树的etc收费系统用户卡状态名单存取方法 | |
CN202602827U (zh) | 基于通用格式码表的可变长解码装置 | |
CN103092859A (zh) | 一种获取音乐文件信息的方法及装置 | |
CN102486839A (zh) | 一种扩充oid编码表征印刷品内容信息量的方法 | |
CN110347804B (zh) | 一种线性时间复杂度的敏感信息检测方法 | |
CN103309993A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |