首页 / 专利库 / 专利权 / 第I章 / 国际申请 / 请求书 / 发明名称 / 根据汉字快速查找兴趣点的检索方法

根据汉字快速查找兴趣点的检索方法

阅读:52发布:2023-03-11

专利汇可以提供根据汉字快速查找兴趣点的检索方法专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种根据汉字快速查找兴趣点的检索方法,包括:将原始数据编译成一级索引文件,按照兴趣点在原始数据文件的顺序将兴趣点的各个字段进行存储,通过文件的偏移地址可以找到每个兴趣点的每个字段的内容;根据一级索引文件,提取其中的汉字名称字段,根据提取的汉字名称字段的每个汉字的兴趣点编号、所在兴趣点的下一个汉字建立二级索引文件;导航 软件 输入查询汉字检索兴趣点时,获取用户输入的第一个汉字在二级索引文件中的信息,和输入的第二个汉字在二级索引文件中的信息求交集,并将二者的交集作为下一个匹配求交集的第一个集合,与用户后续输入的下一个汉字求交集,直到求得用户需要的兴趣点集合,并将检索结果显示给用户。,下面是根据汉字快速查找兴趣点的检索方法专利的具体信息内容。

1.一种根据汉字快速查找兴趣点的检索方法,其特征在于,该方法包括如下步骤,S1.在原始数据文件中的每个POI信息前面添加索引后生成一级索引文件;
S2.将整个一级索引文件的各个POI的名称字段数据进行格式存储,生成二级索引文件;
S3.依据输入的汉字对二级索引文件的POI的名称进行检索,获取符合条件的ID号;
以及
S4.通过文件头部的ID号索引,从一级索引文件中获取所求POI的详细信息。
2.如权利要求1所述的根据汉字快速查找兴趣点的检索方法,其特征在于,所述步骤S2包括,
S21.从一级索引文件中读取每个POI的名称字段中的各个汉字,并且记录每个汉字所在的ID号和该汉字在POI名称字段中出现的位置以及每个汉字所在的POI名称字段中的下一个汉字的编码;
S22.为每个汉字建立一个位置索引。
3.如权利要求1所述的根据汉字快速查找兴趣点的检索方法,其特征在于,所述步骤S3包括,
SS1:在触摸屏上输入要查询的汉字串;
SS2:求出输入的汉字字串中汉字的个数;
SS3:读出在二级索引文件中的所有的汉字编码,保存在内存中;
SS4:二分查找到与用户输入的第一个汉字,得到该第一个汉字在二级索引文件中属于第几个汉字;
SS5:根据第一个汉字在二级索引文件中汉字编码索引中的顺序,找出汉字0的位置索引信息,并记录下第一个汉字每个位置的信息,分别保存在不同的指针数组中去;
SS6:将第i个汉字出现的位置与之前的i-1个汉字出现的位置的交集求交集,并将这个交集作为新的位置交集;
SS7:对于新的位置的交集,则以前面的第i-1个汉字的位置为基准,取出符合前面i-1个字的查询信息并出现在位置m上的ID号的集合,与第i个汉字在位置m+1上的ID号的集合求交集,并将求得的交集作为新的出现在位置m的ID号的交集;此时如果用户只输入了一个查询汉字,则跳转到SS8,否则跳转到SS6;
SS8:保存第i个字的下一个汉字进行汉字联想,同时去掉重复的记录并且另外保存。
4.如权利要求3所述的根据汉字快速查找兴趣点的检索方法,其特征在于,在求得ID号的交集之前求得位置的交集。
5.如权利要求1所述的根据汉字快速查找兴趣点的检索方法,其特征在于,POI与POI的信息连续存放在一级索引文件中,并且在一级索引文件的头部建立每个POI信息的索引。
6.如权利要求1所述的根据汉字快速查找兴趣点的检索方法,其特征在于,通过所述二级索引文件可以找到符合用户查询条件的ID号的集合。
7.如权利要求1所述的根据汉字快速查找兴趣点的检索方法,其特征在于,所述步骤S3还包括:进行汉字联想。
8.如权利要求1所述的根据汉字快速查找兴趣点的检索方法,其特征在于,所述步骤S3还包括:去除重复记录。

说明书全文

根据汉字快速查找兴趣点的检索方法

技术领域

[0001] 本发明涉及导航定位技术领域,尤其是涉及一种根据汉字快速查找兴趣点的检索方法。

背景技术

[0002] 近年来,随着我国汽车产业壮大,汽车正逐渐地走进人们的生活,人们所涉及的区域也越来越广大,同时卫星导航系统日臻成熟,为车载导航仪的研发提供了一个良好的市场环境。
[0003] 在卫星信号良好的前提下,导航系统通过天线接收卫星信号,导航系统的卫星数据分析系统分析出当前车辆所在的经纬度,调用导航系统的地图数据存储单元,在导航仪屏幕上显示给用户虚拟的地理位置,用户通过点击导航仪检索部分的按钮,在触摸屏输入自己的查询信息,并分别确定一个起始地和目的地进行路径规划后进行导航。
[0004] 在中国专利号为CN20081014505.1的发明专利中,公开了一种对兴趣点进行检索的导航装置及其检索兴趣点POI(Point Of Interest)的方法。该方法通过对兴趣点名称数据库中的所有兴趣点名称数据所涉及的中文字符按照一定的顺序进行排列,然后对应于每一个不同的中文字符设立一个由各条索引记录组成的索引项,其中索引项的每条索引记录与包含该特定中文字符的一条兴趣点名称数据项对应,每条索引记录包括与兴趣点名称数据相对应名称编码和该兴趣点名称数据中特定中文字符所在位置的位置编码。该导航装置检索兴趣点时,将录入的文字序列所对应的各个索引项的记录逐一比较,得到符合条件的一组索引记录,然后根据该组索引记录提取兴趣点名称数据后进行显示。
[0005] 在上述发明专利的技术方案中存在如下问题:由于没有对原始数据进行预编译,导致进行兴趣点名称匹配时检索的速度缓慢,内存占用过大;另外,由于在该发明中需要记录每个汉字所在记录号中的位置以及需要对各个索引项的记录逐一进行比较,因此造成了索引数据文件的庞大的同时,也降低了对索引数据文件进行检索的速度。

发明内容

[0006] 为了解决上述专利中现有技术存在的缺陷,本发明提出了一种新的根据汉字快速查找兴趣点的检索方法,通过获取输入的第一个汉字与第二个汉字在二级索引文件中的信息,求出二者的交集,并且将该交集作为下一个匹配求交集的第一个集合,与继续输入的下一个汉字求出它们之间的交集,依此类推,获取需要的兴趣点集合后,将检索结果显示给用户。
[0007] 为达到上述目的,本发明提供了一种根据汉字快速查找兴趣点的检索方法,该方法包括如下步骤:
[0008] S1.在原始数据文件中的每个POI信息前面添加索引后生成一级索引文件;
[0009] S2.将整个一级索引文件的各个POI的名称字段数据进行格式存储,生成二级索引文件;
[0010] S3.依据输入的汉字对二级索引文件的POI名称进行检索,获取符合条件的ID号;
[0011] S4.通过文件头部的ID号索引,从一级索引文件中获取所求POI的详细信息。
[0012] 在本发明的一个实施例中,所述步骤S2还包括如下步骤:
[0013] S21.从一级索引文件中读取每个POI的名称字段所对应的汉字,并且记录每个汉字所在的ID号和该汉字在POI名称字段中出现的位置以及每个汉字所在的POI名称字段中的下一个汉字的编码;
[0014] S22.为每个汉字建立一个位置索引。
[0015] 在本发明的另一个实施例中,所述步骤S3包括,
[0016] SS1:在触摸屏上输入要查询的汉字串;
[0017] SS2:求出输入的汉字字串中汉字的个数;
[0018] SS3:读出在二级索引文件中的所有的汉字编码,保存在内存中;
[0019] SS4:二分查找到与用户输入的第一个汉字,即汉字0的编码相等的汉字,得到该汉字在二级索引文件中属于第几个汉字;
[0020] SS5:根据汉字0在二级索引文件中汉字编码索引中的顺序,找出汉字0的位置索引信息,并记录下汉字0每个位置的信息,分别保存在不同的指针数组中去;
[0021] SS6:将第i个汉字出现的位置与之前的i-1个汉字出现的位置的交集求交集,并将这个交集作为新的位置交集;
[0022] SS7:对于新的位置的交集,则以前面的第i-1个汉字的位置为基准,取出符合前面i-1个字的查询信息并出现在位置m上的ID号的集合,与第i个汉字在位置m+1上的ID号的集合求交集,并将求得的交集作为新的出现在位置m的ID号的交集;此时如果用户只输入了一个查询汉字,则跳转到SS8,否则跳转到SS6;
[0023] SS8:保存第i个字的下一个汉字进行汉字联想,同时去掉重复的记录并且另外保存。
[0024] 在本发明的又一个实施例中,上述步骤S3中还具有汉字联想功能。
[0025] 在本发明的另一个实施例中,上述步骤S3中还具有去掉重复记录的功能。
[0026] 利用本发明实施例的根据汉字快速查找兴趣点的检索方法,可以减少系统内存的消耗,节省更多的内存空间,提高了检索的速度及其效率。附图说明
[0027] 本发明的上述和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
[0028] 图1是根据本发明实施例的根据汉字快速查找兴趣点的检索方法的流程图
[0029] 图2是根据本发明实施例的一级索引文件的格式图;
[0030] 图3是根据本发明实施例的二级索引文件的格式图;
[0031] 图4是根据本发明实施例的根据汉字快速查找兴趣点的检索方法的步骤S3的详细工作流程图。

具体实施方式

[0032] 下面将参照附图更加详细地描述根据本发明的根据汉字快速查找兴趣点的检索方法的具体实施例。
[0033] 如图1所示,本发明实施例的根据汉字快速查找兴趣点的检索方法包括如下步骤:
[0034] S1.在原始数据文件中的每个POI信息前面添加索引后生成一级索引文件;
[0035] S2.将整个一级索引文件的各个POI的名称字段数据进行格式存储,生成二级索引文件;
[0036] S3.依据输入的汉字对二级索引文件的POI名称进行检索,获取符合条件的ID号;
[0037] S4.通过文件头部的ID号索引,从一级索引文件中获取所求POI的详细信息。
[0038] 其中,POI表示原始数据的一个个记录信息,该记录信息包括一个记录的名称、地址、名称首字母等字段。POI的索引偏移地址是指该POI的详细名称、地址、电话等等信息在文件中的存储位置,即该POI的记录信息在文件中的开始位置。相邻两个POI,即A1、A2的索引偏移地址的差值A2-A1就是A1的信息长度,也就是A1的POI详细信息。依此类推,将整个原始文件的数据以图2所示的文件格式进行存储,生成一级索引文件(即bin文件)。由于原始文件中,每行就是一个完整的POI,所以POI的序列号,即ID号就是一个POI在原始数据中的行号。在原始文件的头部建立每个POI信息的索引后生成一级索引文件。
[0039] 从一级索引文件中读取每个POI的名称字段,将POI名称字段中的汉字读取出来,并记录每个汉字所在的ID号、在POI名称字段中出现的位置、每个汉字所在的POI名称字段中的下一个汉字的编码。在写入文件的时候,使用两层索引的办法。第一层索引,记录每个汉字的编码,用于匹配用户出现的汉字;第二层索引,为每个汉字建立一个位置索引,该位置索引是指该汉字出现在所在的POI名称字段中的位置。在第一层和第二层索引之后是具体的每个汉字的每个位置的信息。形如ID号+下一个汉字的形式。依此类推,将整个一级索引文件的各个POI的名称字段数据以图3所示的文件格式进行存储,生成二级索引文件。
[0040] 在二级索引文件中,按照如附图4所示的上述步骤S3的详细搜索步骤进行汉字检索。
[0041] 首先,用户选择需要选择的内容所在的城市,比如“深圳市”。
[0042] SS1:在触摸屏上输入自己想要查询的汉字串,比如:“深圳大学”;
[0043] SS2:求出输入的汉字字串中汉字的个数;
[0044] SS3:读出在二级索引文件中的所有的汉字编码,保存在内存中;
[0045] SS4:二分查找到与用户输入的第一个汉字(即汉字0)的编码相等的汉字,得到该汉字在二级索引文件中属于第几个汉字;
[0046] SS5:根据汉字0在二级索引文件中汉字编码索引中的顺序,找出汉字0的位置索引信息,并记录下汉字0每个位置的信息,分别保存在不同的指针数组中去;例如汉字0出现在了0到m的位置,就把汉字0的0位置对应的信息(形如ID号+下一个汉字)保存在buff[0]中去,依此类推;
[0047] SS6:将第i个汉字出现的位置与之前的i-1个汉字出现的位置的交集求交集,并将这个交集作为新的位置交集;
[0048] SS7:对于新的位置的交集,则以前面的第i-1个汉字的位置为基准,取出符合前面i-1个字的查询信息并出现在位置m上的ID号的集合,与第i个汉字在位置m+1上的ID号的集合求交集,并将求的的交集作为新的出现在位置m的ID号的交集,依此类推;
[0049] 此时如果用户只输入了一个查询汉字,则跳转到SS8,否则跳转到SS6到。
[0050] SS8:根据buff[0]到buff[m]中的ID号去掉重复的ID号,并根据其中的下一个汉字统计处出现次数最多的10个汉字,作为对汉字i的汉字联想,显示给用户,供用户选择,达到引导用户查询的作用。
[0051] 最后,在一级索引文件中,按照符合用户查询条件的ID号,找到该ID号指向的文件索引地址,读取该ID号对应的POI的详细信息,将这些信息显示给用户。
[0052] 作为名称检索和其他检索的基本数据文件,保存着一个POI的全部或者部分信息,在得到一个记录的ID号后可以得到这个POI的所有或者部分信息。
[0053] 作为名称检索的二级索引文件,通过检索算法,可以找到符合用户查询条件的ID号的集合。首先记录某个汉字的总个数,然后记录每个汉字的二进制编码。尤其是它的对于汉字信息的保存格式采用了将某个汉字按照该汉字在POI记录中出现的位置进行存储,不仅减少了二级索引文件的数据大小,并且大大简化了名称检索中的检索速度。
[0054] 首先,用户选择需要查询的内容所在的城市,比如“深圳市”。然后在触摸屏上输入要查询的第一个汉字,比如:“深”,此时“深”出现在了导航仪的输入栏里,调用查询函数,在二级索引文件中获取该城市的POI记录中总共出现了多少个不同的汉字,然后折半查找到“深”的编码相同的汉字,之后,根据“深”在二级索引文件中的一层索引中属于第几个汉字,然后在二级索引文件中读取“深”的位置索引信息。如果此时用户点击“确定”按钮,将“深”出现在在二级索引文件中的信息读取,保存在一个一维数组中,比如pnarray1[80],pnarray1[80]有80个元素,数组的下标表示“深”出现的位置,根据“深”的位置索引,在二级索引文件中读取“深”的形如“ID号+下一个汉字”的信息,保存在*pnarray1[80]中,此时*pnarray1[i](0=<i<=80)中保存的是汉字“深”出现在第i个位置的实际的信息。并将去重后的POI记录ID号集合保存起来,同时统计出现次数最多的10个“深”在POI记录中的下一个汉字,作为对“深”字的汉字联想,显示给用户,便于用户根据实际数据进行有目的检索。在一级索引文件(bin文件)中找到该ID号集合中每个ID号对应的实际信息内容,在显示屏幕上显示给用户;如果用户输入了第二个汉字,假如是“圳”,同上,找到“圳”的位置信息索引,与之前读取的“深”的位置索引信息求交集,得到一个满足“圳”的位置比“深”的位置大1的位置集合,将“圳”的位置比“深”的位置大1的位置称为“正确位置”。
读取“圳”的“正确位置”的实际信息,保存在一个另外一个一维数组中pnarray2[80],然后求“正确位置”的“深”和“圳”的实际信息的交集,并将二者的每个位置的实际信息的交集作为pnarray1[80],更新pnarray1[80],与下一个用户输入的汉字进行匹配,求ID号的交集。然后,同样的去重和求汉字联想。
[0055] 基于二级索引文件的格式,该算法在求ID交集之前先求位置的交集,这样不仅仅减少了二级索引文件的大小,而且在求的ID号一致的前提下不必再考虑两个查询字的位置是否相邻,即两个查询字是否连续。这样大大减少了比较ID号的次数,同时也省去了保存汉字的不符合条件的位置的实际信息的内存,这就大大减少了内存的消耗。例如,“深”出现在了第0,1,4,7,9的位置,“圳”出现在了第1,2,3,7,10的位置,直接先对位置求交集,以用户的第1个查询字为基准,求符合条件的位置,即“正确位置”为第0,1,9这3个位置,此时,首先考虑内存的因素,首先释放掉上述的pnarray1[80]中的pnarray1[4],pnarray1[7],然后只读取“圳”的出现在第1,2,10这三个位置的对应的实际信息。这就比不经处理,直接读取“深”的第0,1,4,7,9位置的详细信息,“圳”的第1,2,3,7,11位置的详细信息,节省了很多内存空间。
[0056] 用户输入“深圳”作为查询字。“深”的第0,1,9这3个位置符合要求,分别拿出“深”的第0个位置的ID号的集合和“圳”的第1个位置的ID号的集合,求ID号的交集,如果“深”的当前ID号大于“圳”的当前ID号,则“圳”的ID号后移,即获取“圳”在第一个位置的下一个ID号;相反,“深”的ID号后移;如果“深”的当前ID号,等于“圳”的当前ID号,则认为此ID号是满足条件的ID号,将此ID号保存起来。如此进行下去,直到“深”取完在位置0上的ID号或者“圳”取完在位置1上的ID号。此时清空并释放“深”在位置0的pnarray1[0]中的内容,并将匹配好的ID好的集合存放到pnarray1[0]中。以此类推,分别求“深”在位置0,1,9所在位置的交集。上述算法的算法对于每个位置的算法复杂度为o(m),整个算法的复杂度为n*o(m)。在求ID号的交集之前求位置索引的交集,避免了求一些不符合要求特别是不能保证查询字是相连的关系的位置的详细信息,大大减少了比较的次数;同时在对符合条件位置索引对应的信息求ID号的交集的时候,并不需要比较ID号在相同的条件下是否前后两个查询字的位置是否差1,这一点,也大大减少了比较的次数,从而提高了检索算法的速度。
[0057] 在符合条件的ID号中,针对当前汉字的下一个汉字的编码,统计出出现次数最多的10个汉字,显示给用户,作为下一步查询的一个参照,这样就给用户的查询带来了很多便利。具体实现办法如下:首先定义一个结构体数组,记为stHANZI[10],其中stHANZI[i].m_times表示该汉字出现了多少次,stHANZI[i].key表示该汉字的二进制编码,其中0=<i<10。一个一维数组nhanzi_list[10000],初始化为0,nhanzi_list[i]的下标i表示该汉字的ASCII码值的相反数,nhanzi_list[i]表示该汉字出现的次数。对前十个不同的汉字,直接插入而无需排序和比较。在这个过程中,如果读取的下一个汉字在这10个汉字中,则该汉字的key加1,在数组插满后,数组中某个汉字的key加1都要就行比较,求出这10个汉字中出现次数最小的汉字,如果读取的下一个汉字不在这10个汉字中,则nhanzi_list[i]++,对比nhanzi_list[i]与stHANZI[10]中的10个汉字中最小的汉字出现的次数,大则替换,小则继续。这个汉字联想算法的复杂度为o(n)。
[0058] 本发明中对于重复的记录号,考虑到用户翻阅6000个记录去找满足自己要求的记录的做法很少,采取了一种“伪装”的去重办法。具体如下:如果待去重的记录数大于6000,则只对前6000个记录去重,否则对所有待去重的记录全部去重。这就大大减少了去重算法所占用的时间。对于大的数据量,比如上海的40万数据,用户输入“上”,有25万左右的POI记录满足要求,如果对25万数据去重,带来的对整个检索算法时间的滞后。上述处理办法,大大提高了整个检索算法的效率和执行速度。
[0059] 利用本发明的根据汉字快速查找兴趣点的检索方法,可以减少系统内存的消耗,节省更多的内存空间,提高了检索的速度及其效率。
[0060] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈