CN111831876A - 查询方法、设备和存储介质 - Google Patents

查询方法、设备和存储介质 Download PDF

Info

Publication number
CN111831876A
CN111831876A CN201910297346.5A CN201910297346A CN111831876A CN 111831876 A CN111831876 A CN 111831876A CN 201910297346 A CN201910297346 A CN 201910297346A CN 111831876 A CN111831876 A CN 111831876A
Authority
CN
China
Prior art keywords
index
query
word
words
list
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.)
Pending
Application number
CN201910297346.5A
Other languages
English (en)
Inventor
李世峰
李中男
朱宏波
于严
赵帅领
王鹏
郭艳民
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Navinfo Co Ltd
Original Assignee
Navinfo Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Navinfo Co Ltd filed Critical Navinfo Co Ltd
Priority to CN201910297346.5A priority Critical patent/CN111831876A/zh
Publication of CN111831876A publication Critical patent/CN111831876A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种查询方法、设备和存储介质,该方法包括:获取查询词;若查询列表中包含有与查询词的编码值相同的目标索引词,则根据查询列表,确定目标索引词的索引标识,以及包括查询词的候选索引词的数量,查询列表用于指示目标索引词的编码值、目标索引词的索引标识、候选索引词的数量的对应关系;根据目标索引词的索引标识,以及候选索引词的数量,获取所有候选索引词,其中,相邻的候选索引词的索引标识连续;推送所有候选索引词。本发明通过预先建立目标索引词的编码值、目标索引词的索引标识、候选索引词的数量的对应关系,能够快速确定所有候选索引词,与索引词的数量无关,提高了索引效率。

Description

查询方法、设备和存储介质
技术领域
本发明涉及计算机科学技术领域,尤其涉及一种查询方法、设备和存储介质。
背景技术
随着互联网信息的快速膨胀,用户对搜索引擎的依赖程度越来越大,其商业价值无法估量。通常用户在使用移动端或者PC端输入一个想要查询的字符时,搜索引擎需要快速、智能地提示用户想要输入的剩余部分,即联想词索引功能。
现有的技术中,联想词索引功能一般采用顺序表索引、哈希表索引的方式;顺序表索引是将所有的索引词按顺序存储起来,搜索的时候通过二分查找来获取索引词;哈希表索引是把每个查询词通过哈希函数与对应的索引词列表建立一个映射,通过该映射关系获取索引词。
顺序表索引的查询时间复杂度是O(log2n),n是索引词的数量,该方法搜索的效率很低,尤其是索引词的数量非常大的情况下搜索效率更低;哈希表索引的查询时间复杂度是O(1),搜索效率高,但是当数据量大时,哈希函数为了避免哈希碰撞导致运算量上升。
发明内容
本发明提供一种查询方法、设备和存储介质,与索引词的数量无关,提高了索引效率。
本发明的第一方面提供一种查询方法,包括:
获取查询词;
若查询列表中包含有与所述查询词的编码值相同的目标索引词,则根据所述查询列表,确定所述目标索引词的索引标识,以及包括所述查询词的候选索引词的数量,所述查询列表用于指示所述目标索引词的编码值、所述目标索引词的索引标识、所述候选索引词的数量的对应关系;
根据所述目标索引词的索引标识,以及所述候选索引词的数量,获取所有所述候选索引词,其中,相邻的所述候选索引词的索引标识连续;
推送所有所述候选索引词。
本发明的第二方面提供一种查询设备,包括:
查询词获取模块,用于获取查询词;
确定模块,用于若查询列表中包含有与所述查询词的编码值相同的目标索引词,则根据所述查询列表,确定所述目标索引词的索引标识,以及包括所述查询词的候选索引词的数量,所述查询列表用于指示所述目标索引词的编码值、所述目标索引词的索引标识、所述候选索引词的数量的对应关系;
候选索引词获取模块,用于根据所述目标索引词的索引标识,以及所述候选索引词的数量,获取所有所述候选索引词,其中,相邻的所述候选索引词的索引标识连续;
推送模块,用于推送所有所述候选索引词。
本发明的第三方面提供一种查询设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述查询设备执行上述查询方法。
本发明的第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机执行指令,当所述计算机执行指令被处理器执行时,实现上述查询方法。
本发明提供一种查询方法、设备和存储介质,该方法包括:获取查询词;若查询列表中包含有与查询词的编码值相同的目标索引词,则根据查询列表,确定目标索引词的索引标识,以及包括查询词的候选索引词的数量,查询列表用于指示目标索引词的编码值、目标索引词的索引标识、候选索引词的数量的对应关系;根据目标索引词的索引标识,以及候选索引词的数量,获取所有候选索引词,其中,相邻的候选索引词的索引标识连续;推送所有候选索引词。本发明通过预先建立目标索引词的编码值、所述目标索引词的索引标识、所述候选索引词的数量的对应关系,能够快速确定所有候选索引词,与索引词的数量无关,提高了索引效率。
附图说明
图1为本发明提供的查询方法适用的***架构示意图;
图2为本发明提供的查询方法的流程示意图一;
图3为本发明提供的查询方法对应的终端的界面变化示意图;
图4为本发明提供的查询方法的流程示意图二;
图5为本发明提供的查询方法中建立查询列表、字典文件和查询文件的流程示意图;
图6为本发明提供的索引树的示例图;
图7为本发明提供的查询文件的示例图;
图8为本发明提供的字典文件的示例图;
图9为本发明提供的查询设备的结构示意图一;
图10为本发明提供的查询设备的结构示意图二;
图11为本发明提供的查询设备的结构示意图三。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明的实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的查询方法适用的***架构示意图,本发明提供的查询方法适用于如图1所示的查询场景中,该查询场景包括终端和查询设备,该查询设备可以为服务器,本发明提供的终端与查询设备通过有线或者无线的方式进行通信连接,用户通过该终端进行查询词的输入,终端获取查询词后,将该查询词发送给查询设备,以使查询设备根据该查询词向终端返回该查询词对应的联想词(索引词)。下述实施例中以查询设备为服务器为例对本发明提供的查询方法进行说明。
本发明中终端可以但不限于为移动终端或者固定终端。具体的移动终端可以为智能手机、PAD等具有使得用户输入查询词,以及,显示功能的移动设备。固定终端可以是台式计算机等具有使得用户输入查询词,以及,显示功能的固定设备。
图2为本发明提供的查询方法的流程示意图一,图2所示方法流程的执行主体可以为查询设备,该查询设备可以为上述中的服务器。如图2所示,本实施例提供的查询方法可以包括:
S101,获取查询词。
本实施例中,终端可以获取查询词,终端获取查询词的方式可以是:终端显示获取查询词的界面,具体的,终端可以通过用户在界面上输入的查询词获取查询词,也可通过采集用户输入的音频获取查询词。在终端获取查询词之后,可以将该查询词发送给服务器,以使服务器获取查询词。
S102,若查询列表中包含有与查询词的编码值相同的目标索引词,则根据查询列表,确定目标索引词的索引标识,以及包括查询词的候选索引词的数量,查询列表用于指示目标索引词的编码值、目标索引词的索引标识、候选索引词的数量的对应关系。
本实施例中,查询列表中可以预先存储有索引词的编码值。当服务器获取查询词之后,可以根据约定编码方式对查询词进行编码,获取查询词的编码值,进而在查询列表中确定是否包含有与查询词的编码值相同的目标索引词。应理解,约定编码方式与对查询列表中的索引词进行编码的编码方式相同。
其中,查询列表用于指示目标索引词的编码值、目标索引词的索引标识、候选索引词的数量的对应关系。在查询列表中包含有与查询词的编码值相同的目标索引词时,可以根据查询列表中确定目标索引词的索引标识,以及包含查询词的候选索引词的数量。其中,目标索引词为所有候选索引词中索引标识最小的候选索引词。其中,候选索引词的数量为包括查询词的候选索引词的个数。例如,查询词为“北京”,则包含有“北京”的候选索引词有4个,该候选索引词的数量为4。
具体的,服务器中的查询列表中的所有的索引词是具有一定顺序排列的索引词。示例性的,索引词的排列顺序可以是对查询数据库中的每个索引词按照索引词中每个字符的Unicode码的顺序进行排列的,相邻的索引词的索引标识是连续的,表一示出了一种索引词、索引词的编码值、以及对应的索引标识的对应列表,其中,本实施例中对索引词编码的方式不做限制,表一中以字母的方式表示索引词的编码值。
示例性的,若索引词包括有“北京市”、“北京大学”、“北京图书大厦”和“北京市政府”四个索引词,按照每个索引词中每个字符的Unicode码对该四个索引词进行排序后,获取的索引词和对应的索引标识的对应列表如下所示:
表一
索引标识 索引词 编码值
1000 北京大学 A
1001 北京市 B
1002 北京市政府 C
1003 北京图书大厦 D
示例性的,查询词为“北”,则包含有该查询词的候选索引词为“北京市”、“北京大学”、“北京图书大厦”和“北京市政府”四个索引词,则包含该查询词的候选索引词的数量为4,目标索引词的索引标识为所有候选索引词中索引标识最小的候选索引词,即1000。示例性的,查询词为“北京市”,则包含有“北京市”的候选索引词为“北京市”和“北京市政府”两个索引词,则包含有“北京市”的候选索引词的数量为2,目标索引词的索引标识为1001。
查询列表中用于指示目标索引词、目标索引词的索引标识、所有候选索引词的数量的对应关系,服务器中存储的查询列表的形式具体可如下表二所示:
表二
Figure BDA0002027021570000051
本实施例中为了使得更为准确的获取查询词对应的索引词,上述表二中还可以将索引词对应的索引查询词进行存储,具体的查询列表的形式具体可如下表三所示:
表三
Figure BDA0002027021570000061
由于本实施例中服务器中预先存储有查询列表,在服务器获取查询词之后,可以将查询词的编码值与查询列表中的索引词的编码值进行匹配获取目标索引词,且在查询列表中获取目标索引词的索引标识,以及,包括查询词的候选索引词的数量。
S103,根据目标索引词的索引标识,以及候选索引词的数量,获取所有候选索引词,其中,相邻的候选索引词的索引标识连续。
本实施例中的查询数据库预先存储有多个按照顺序排列的索引词,相邻的候选索引词的索引标识连续,且每个索引词的索引标识与查询列表中所用的索引标识相同。服务器获取目标索引词的索引标识,以及,候选索引词的数量之后,可以在查询数据库中以该目标索引词的索引标识为起始标识,连续的多个索引词即为所有的候选索引词,多个索引词的数量与上述确定的候选索引词的数量相同。
示例性的,当查询词为“北京”时,对应的包括查询词的候选索引词的数量为4,以及,目标索引词的索引标识为1000,则从索引标识为1000至索引标识为1004的索引词为所有候选索引词,即候选索引词为“北京大学”、“北京市”、“北京市政府”和“北京图书大厦”。
S104,推送所有候选索引词。
在服务器在数据库中获取所有的候选索引词后,将所有候选索引词推送给终端。
示例性的,图3为本发明提供的查询方法对应的终端的界面变化示意图,如图3所示,界面201为用户在查询框中输入的查询词是“北”时,服务器向终端推送所有候选索引词为“北京大学”、“北京市”、“北京市政府”和“北京图书大厦”;界面202为用户在查询框中输入的查询词是“北京”时,服务器向终端推送所有候选索引词为“北京大学”、“北京市”、“北京市政府”和“北京图书大厦”;界面203为用户在查询框中输入的查询词是“北京市”时,服务器向终端推送所有候选索引词为“北京市”以及“北京市政府”。
本实施例提供一种查询方法,该方法包括:获取查询词;若查询列表中包含有与查询词的编码值相同的目标索引词,则根据查询列表,确定目标索引词的索引标识,以及包括查询词的候选索引词的数量,查询列表用于指示目标索引词的编码值、目标索引词的索引标识、候选索引词的数量的对应关系;根据目标索引词的索引标识,以及候选索引词的数量,获取所有候选索引词,其中,相邻的候选索引词的索引标识连续;推送所有候选索引词。本实施例通过预设的每个索引词与目标索引词标识、包括该索引词的候选索引词的数量的对应关系,可以在获取查询词后,快速获取与查询词对应的所有候选索引词,提高了索引效率。
在上述实施例的基础上,下面结合图4对本发明提供的查询方法,以及其中的查询列表进行进一步说明,图4为本发明提供的查询方法的流程示意图二,如图4所示,本实施例提供的查询方法可以包括:
S301,建立查询列表、字典文件和查询文件。
本实施例中的索引数据库中存储有预先建立好的查询文件,查询文件包括查询索引区、查询内容区;查询索引区用于存储查询列表,查询索引区还用于指示目标索引词在查询内容区的存储位置,查询内容区用于存储索引数据库中的所有索引词。
索引数据库中还存储有预先建立好的字典文件,字典文件包括:字典元区和字典内容区,字典元区用于存储所有索引词的编码值,以及与每个索引词的编码值对应的双数组编码基base值和双数组编码校验check值在字典内容区的存储位置,字典内容区用于存储每个索引词的编码值对应的base值和check值。应理解,在对索引词进行双数据编码后,可以获取每个查询词的base数组和check数组。其中,base数组中包括每个索引词的编码值和与该编码值对应的base值,同理地,check数组中包括每个索引词的编码值和与该编码值对应的check值。
本实施例中对建立查询列表、字典文件和查询文件的具体过程结合图5中进行说明。图5为本发明提供的查询方法中建立查询列表、字典文件和查询文件的流程示意图,如图5所示,本实施例中的S301的具体过程为:
S3011,根据每个索引词中每个字符的Unicode码和每个索引词的长度,对所有索引词进行排序,生成索引词列表。
本实施例中,服务器将查询数据库中存储的多个索引词先进行排序,具体方式为:依次遍历每个索引词中每个字符的Unicode码,按照每个索引词中每个字符的Unicode码的顺序,获取待生成的索引词列表中的索引词的第一排序。
示例性的,数据库中有“北京大学”、“北京市”、“北京市政府”和“北京图书大厦”四个索引词,依次按照索引词的首字符、第二字符,……直至最后一个字符的Unicode码获取索引词的顺序,获取待生成的索引词列表中的索引词的第一排序可以依次为“北京大学”、“北京市”、“北京市政府”和“北京图书大厦”的排序。
本实施例中,若存在至少两个索引词中部分字符的Unicode码的顺序相同,则按照至少两个索引词的长度,在第一排序中调整至少两个索引词的顺序,得到调整后的第一排序。其中,索引词的长度可以为索引词中包含的字符个数。例如,索引词为“北京”,则索引词的长度为2;索引词为“北京市”,则索引词的长度为3。
示例性的,上述第一排序中的“北京市”、“北京市政府”为索引词,其中有部分字符的Unicode码的顺序相同,则在按照两个索引词的长度从小到大的顺序对在第一排序中调整这两个索引词的顺序,得到调整后的第一排序为“北京大学”、“北京市”、“北京市政府”和“北京图书大厦”。
服务器在获取多个索引词的排序后,根据调整后的第一排序、每个索引词,每个索引词的索引标识,生成索引词列表。具体的,索引词的索引标识可以是按照上述排序获取的索引词在所有的索引词中的顺序序号。
示例性的,索引词列表可如上述实施例中的表一所示,如“北京大学”为所有的索引词中排序为第1000的索引词,因此将“北京大学”的索引标识设置为1000。
S3012,根据索引词列表,获取具有相同首字符的索引词对应的索引树。
本实施例中,服务器根据索引词列表,获取具有相同首字符的索引词对应的索引树。图6为本发明提供的索引树的示例图,图6所示的是在索引词为“北京大学”、“北京市”、“北京市政府”和“北京图书大厦”时形成的索引树,做以示例说明。
本实施例中的索引树包括多个节点,每个节点包括具有相同首字符的索引词的一个字符,其中,每个节点对应的字符是按照索引词中每个字符的Unicode码的顺序进行排列的。如:索引词为“北京大学”、“北京市”、“北京市政府”和“北京图书大厦”具有相同的首字符为“北”,索引词“北京大学”对应的各个节点的顺序分别为“北”、“京”、“大”和“学”;相应的,北京市”、“北京市政府”和“北京图书大厦”对应的节点中的字符是按照索引词中每个字符的顺序进行排列的。
其中,每个节点对应的索引标识为:索引词列表中,以节点中的字符和节点的父节点的所有字符组成的索引词的索引标识;示例性的,节点“市”对应的标识是:以“市”和“市”的父节点的所有字符“北”和“京”组成的索引词“北京市”的索引标识,在索引词列表中,“北京市”的索引标识为1001,因此该“市”所在的节点的索引标识即为1001。
每个节点对应的数量为索引词列表中以索引词开头的索引词的数量;示例性的,节点“市”对应的数量是:以“市”和“市”的父节点的所有字符“北”和“京”组成的索引词“北京市”开头的索引词的数量,在索引词列表中,以“北京市”开头的索引词为“北京市”、“北京市政府”,则节点“市”对应的数量是2。
按照上述方式,服务器依次遍历索引树中的每个节点,获取每个节点和其父节点中的字符组成的索引词对应的索引标识,以及包含该索引词的数量。
S3013,对索引树的每个节点对应的索引词进行双数组编码,获取每个索引词的编码值,以及每个索引词的编码值对应的双数组编码基base值和双数组编码校验check值。
应理解,每个节点对应的索引词即为每个节点和其父节点中的字符组成的索引词。本实施例中,服务器对每个索引树的每个索引词进行双数组编码,获取base数组和check数组。base数组和check数组中包括每个索引词的编码值,以及每个索引词的编码值对应的双数组编码基base值和双数组编码校验check值。
具体的,服务器将每个节点对应的单个字符的编码即为每个字符对应的Unicode码。例如,如图6所示,上述已经构建好的索引树主要包含10个字符,这10个字符以及对应的Unicode码是:北(21271)、京(20140)、大(22823)、市(24066)、图(22270)、学(23398)、政(25919)、书(20070)、府(24220)、厦(21414),则对索引树中的每个索引词进行双数组编码,即获取索引词对应的编码分别为:北(21271)、北京(40907=20767+20140)、北京大(41461=18638+22823)、北京市(42704=18638+24066)、北京图(40908=18638+22270)、北京大学(40909=17511+23398)、北京市政(40910=14991+25919)、北京图书(40911=20841+20070)、北京市政府(40912=16692+24220)、北京图书大(40913=18090+22823)、北京图书大厦(40914=19500+21414)。
其中,在对每个索引词进行双数组编码的过程中,都需要判断当前编码是否超出双数组base、check的长度以免数组下标越界,在双数组中最大编码的后面预留出40907个空间,从而达到以损失很小的空间换取高效的目的。
具体的双数组编码的base数组如下表四所示,双数组编码的check数组如下表五所示:
表四
Figure BDA0002027021570000101
表五
Figure BDA0002027021570000102
如上表四、表五所示,base数组和check数组的对应的表格中的下方区域是分别为base值和check值;base数组和check数组的对应的表格中的上方区域均为索引词的编码值。
S3014,根据索引树中每个节点对应的索引词的编码值、每个节点对应的索引标识和数量,建立查询列表和查询文件。
服务器在获取每个索引词对应的编码值后,可以将索引树的每个索引词、每个索引树的每个索引词的编码值,以及,每个索引树的每个索引词所属的节点对应的索引标识、数量建立映射关系,得到查询列表。应理解,每个索引树的每个索引词所属的节点对应的索引标识,即该索引词为目标索引词时的目标索引词的索引标识。
示例性的,查询列表可如下表六所示:
表六
索引词 编码值 索引标识 数量
21271 1000 4
北京 40907 1000 4
北京市 42704 1001 2
北京大 41461 1000 1
同理地,服务器根据索引树中每个节点对应的索引词的编码值、每个节点对应的索引标识和数量,建立查询文件。其中,可以在查询数据库中构建查询文件,该查询文件划分为查询索引区和查询内容区。将建立好的查询列表存储在查询文件的查询索引区,将索引数据库中的所有索引词存储在查询内容区。且将每个索引词在查询内容区的存储位置存储在查询索引区,据此构建查询文件。
可选的,服务器在生成查询列表后,还可以将查询列表以双数组的形式进行存储,相应的,获取的双数据包括每个索引词对应的from数组(即索引标识)和length数组(即包含该索引词的数量)。
具体的,from数组如下表七所示,length数组如下表八所示:
表七
Figure BDA0002027021570000111
表八
Figure BDA0002027021570000112
如上表七、表八所示,from数组和length数组的对应的表格中的上方区域是数组下标,即分别为对应的索引词的编码值,表格中的下方区域是数组内容,分别为对应的索引标识和包含该索引词的数量。
图7为本发明提供的查询文件的示例图,如图7所示,查询元区中存储有每个索引词的编码值,以及每个索引词在查询内容区的存储位置,图7中为了简便示意,在查询索引区中示出了索引词的个数。查询内容区存储有每个索引树的每个索引词对应的目标索引词的索引标识和包含该索引词的数量。示例性的,from21271和length21271分别对应索引词“北”的目标索引词的索引标识和索引词数量,from40907和length40907分别对应索引词“北京”的索引标识和索引词数量,图7中以简写f代表目标索引词的索引标识,以简写l代表索引词数量。
S3015,根据索引树中每个节点对应的索引词的编码值,以及每个索引词的编码值对应的base值和check值,建立字典文件。
与上述建立查询文件的方式相同,可以在查询数据库中构建字典文件,该字典文件划分为字典元区和字典内容区。将索引树中每个节点对应的索引词的编码值存储在字典元区,且将每个索引词的编码值对应的base值和check值存储在字典内容区,进一步的将每个索引词的编码值对应的base值和check值在字典内容区的存储位置存储在字典元区,据此构建字典文件,便于对每个索引词的编码值对应的base值和check值的查询。
图8为本发明提供的字典文件的示例图,如图8所示,字典元区中存储有索引词的编码值,以及每个索引词的编码值对应的base值和check值在字典内容区的存储位置,图8中为了简便示意,在字典元区中示出了索引词的数量。字典内容区存储有每个索引树的每个索引词对应的base值和check值;其中,示例性的,base21271和check21271分别对应索引词“北”的base值和check值,base40907和check40907分别对应索引词“北京”的base值和check值,图8中以简写b代表base值,以简写c代表check值。
应理解,S3014和S3015不具有先后顺序的区分,二者可以同时执行。
S302,获取查询词。
S303,根据查询词、每个索引词的编码值对应的base值和check值,确定查询列表中包含有与查询词的编码值相同的目标索引词。
其中,若查询词包含有1个字符,则查询词的Unicode码为查询词的编码值,根据该查询词的编码值和查询列表中存储的多个索引词的编码值进行比较,确定查询列表中包含有与查询词的编码值相同的目标索引词。
若查询词包含有i个字符,i为大于1的整数,即查询词中包含有至少两个字符时,可以根据第i个字符的Unicode码,以及第一字符串的编码值对应的base值,在字典元区中获取第二字符串的编码值。其中,第一字符串为:从查询词的首字符开始至第i-1个字符形成的字符串,第二字符串为:从首字符开始至第i字符形成的字符串。
若第二字符串的编码值对应的check值为第i-1个字符的Unicode码,则确定查询列表中包含有与查询词的编码值相同的目标索引词,第二字符串的编码值为查询词的编码值。
例如,查询词为“北京”,查询词的首字符“北”对应的Unicode码为21271,“京”对应的Unicode码20140;以首字符为首字符的预设索引词“北京”的编码值为40907,则根据“北京”的编码值为40907和“京”对应的Unicode码20140的差值获取“北”对应的base值为20767,服务器判断查询词除了首字符外还有第二字符“京”,根据第二字符的Unicode码和首字符对应的base值,获取从首字符开始至第二字符的字符串“北京”编码值;判断字符串编码值对应的check值是否为首字符的Unicode码,当该字符串编码值对应的check值为首字符的Unicode码时,即该字符串编码值对应的check值等于首字符的Unicode码时,确定查询列表中包含有与查询词的编码值相同的目标索引词,该字符串编码值即为查询词的编码值。可选的,若该字符串编码值对应的check值不为首字符的Unicode码时,即字符串编码值对应的check值不等于首字符的Unicode码时,确定查询列表中不包含有目标索引词,则停止查询。
应理解,在该场景下,还可以继续判断查询词是否还包括有第三字符,可以按照与上述相同的方式继续判断三个字符串编码值对应的check值是否等于第二个字符的Unicode码,若是,则继续判断是否有第四字符,按照上述判断方式,直至查询词中的最后一个字符判断完毕,确定查询列表中包含有与查询词的编码值相同的目标索引词。
S304,根据目标索引词的索引标识,在查询索引区确定目标索引词在查询内容区的存储位置;根据目标索引词在查询内容区的存储位置和候选索引词的数量,在查询内容区中获取所有候选索引词。
上述步骤中,服务器获取到查询词的编码值,且确定查询列表中包含有与查询词的编码值相同的目标索引词,则可以在查询列表中确定与查询词的编码值相同的目标索引词的索引标识、包括查询词的候选索引词的数量。由于查询索引区中包含有每个索引词在查询内容区中的存储位置,因此可以根据目标索引词的索引标识获取目标索引词在查询内容区中的存储位置。
可选的,查询内容区中的索引词的排序可以与查询列表中的排序方式相同,即相邻的索引词的索引标识连续。则服务器根据该目标索引词在查询内容区的存储位置,以及包括查询词的候选索引词的数量,可以在查询内容区中获取所有候选索引词。例如,包括查询词的候选索引词的数量为3个,目标索引词的索引标识为1000,则对应的所有的候选索引词为索引标识为1000、1001和1002的索引词。
S305,推送所有候选索引词。
本实施例中的S302、S305的具体实施方式具体可参照上述实施例中的S101、S104中的相关描述,在此不做赘述。
本实施例中采用索引树的方式,可以快捷地确定每个节点对应的索引词,以及每个索引词对应的索引标识和包括该索引词的数量,进而建立查询列表和查询文件;进一步的采用双数组编码的方式将索引树中的索引词进行双数组编码,为建立字典文件提供了方便。本实施例中还根据字典文件确定查询列表中包含有目标索引词时,在查询文件中获取所有候选索引词。本实施例中的字典文件和查询文件的结构对确定查询列表中包含有目标索引词,以及获取所有候选索引词提供了方便,本实施例中提供查询方式的索引速度与索引词的数量无关,可以提高索引效率。
图9为本发明提供的查询设备的结构示意图一。如图9所示,该查询设备400包括:查询词获取模块401、确定模块402、候选索引词获取模块403和推送模块404。
查询词获取模块401,用于获取查询词。
确定模块402,用于若查询列表中包含有与查询词的编码值相同的目标索引词,则根据查询列表,确定目标索引词的索引标识,以及包括查询词的候选索引词的数量,查询列表用于指示目标索引词的编码值、目标索引词的索引标识、候选索引词的数量的对应关系。
候选索引词获取模块403,用于根据目标索引词的索引标识,以及候选索引词的数量,获取所有候选索引词,其中,相邻的候选索引词的索引标识连续。
推送模块404,用于推送所有候选索引词。
本实施例提供的查询设备与上述查询方法实现的原理和技术效果类似,在此不作赘述。
可选的,图10为本发明提供的查询设备的结构示意图二。如图10所示,该查询设备400还包括:建立模块405。
可选的,索引数据库中存储有查询文件,查询文件包括查询索引区、查询内容区;查询索引区用于存储查询列表,查询索引区还用于指示目标索引词在查询内容区的存储位置,查询内容区用于存储索引数据库中的所有索引词。
可选的,索引数据库中还存储有字典文件,字典文件包括:字典元区和字典内容区,字典元区用于存储所有索引词的编码值,以及与每个索引词的编码值对应的base值和check值在字典内容区的存储位置,字典内容区用于存储每个索引词的编码值对应的base值和check值。
确定模块402,还用于根据查询词、每个索引词的编码值对应的base值和check值,确定查询列表中包含有与查询词的编码值相同的目标索引词。
可选的,查询词包含有i个字符。
确定模块402,具体用于根据第i个字符的Unicode码,以及第一字符串的编码值对应的base值,在字典元区中获取第二字符串的编码值,第一字符串为:从查询词的首字符开始至第i-1个字符形成的字符串,第二字符串为:从首字符开始至第i字符形成的字符串;
若第二字符串的编码值对应的check值为第i-1个字符的Unicode码,则确定查询列表中包含有与查询词的编码值相同的目标索引词,第二字符串的编码值为查询词的编码值,i为大于1的整数;
其中,i等于1时,查询词的Unicode码为查询词的编码值。
候选索引词获取模块403,具体用于根据目标索引词的索引标识,在查询索引区确定目标索引词在查询内容区的存储位置;根据目标索引词在查询内容区的存储位置和候选索引词的数量,在查询内容区中获取所有候选索引词。
建立模块405,用于根据每个索引词中每个字符的Unicode码和每个索引词的长度,对所有索引词进行排序,生成索引词列表;根据索引词列表,建立查询列表、字典文件和查询文件。
可选的,建立模块405,具体用于依次遍历每个索引词中每个字符的Unicode码,按照每个索引词中每个字符的Unicode码的顺序,获取待生成的索引词列表中的索引词的第一排序;若存在至少两个索引词中至少一个字符的Unicode码的顺序相同,则按照至少两个索引词的长度,在第一排序中调整至少两个索引词的顺序,得到调整后的第一排序;根据调整后的第一排序、每个索引词,每个索引词的索引标识,生成索引词列表。
可选的,建立模块405,具体用于根据索引词列表,获取具有相同首字符的索引词对应的索引树,索引树包括多个节点,每个节点包括具有相同首字符的索引词的一个字符;其中,每个节点对应的索引标识为:索引词列表中,以节点中的字符和节点的父节点的所有字符组成的索引词的索引标识,每个节点对应的数量为索引词列表中包括索引词的候选索引词的数量;
对索引树的每个节点对应的索引词进行双数组编码,获取每个索引词的编码值,以及每个索引词的编码值对应的base值和check值;
根据索引树中每个节点对应的索引词的编码值、每个节点对应的索引标识和数量,建立查询列表和查询文件;
根据索引树中每个节点对应的索引词的编码值,以及每个索引词的编码值对应的base值和check值,建立字典文件。
图11为本发明提供的查询设备的结构示意图三,如图11所示,该查询设备500包括:存储器501和至少一个处理器502。
存储器501,用于存储程序指令。
处理器502,用于在程序指令被执行时实现本实施例中的查询方法,具体实现原理可参见上述实施例,本实施例此处不再赘述。
该查询设备500还可以包括及输入/输出接口503。
输入/输出接口503可以包括独立的输出接口和输入接口,也可以为集成输入和输出的集成接口。其中,输出接口用于输出数据,输入接口用于获取输入的数据,上述输出的数据为上述方法实施例中输出的统称,输入的数据为上述方法实施例中输入的统称。
本发明还提供一种可读存储介质,可读存储介质中存储有执行指令,当查询设备的至少一个处理器执行该执行指令时,当计算机执行指令被处理器执行时,实现上述实施例中的查询方法。
本发明还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。查询设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得查询设备实施上述的各种实施方式提供的查询方法。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
在上述网络设备或者终端设备的实施例中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:ApplicationSpecific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种查询方法,其特征在于,包括:
获取查询词;
若查询列表中包含有与所述查询词的编码值相同的目标索引词,则根据所述查询列表,确定所述目标索引词的索引标识,以及包括所述查询词的候选索引词的数量,所述查询列表用于指示所述目标索引词的编码值、所述目标索引词的索引标识、所述候选索引词的数量的对应关系;
根据所述目标索引词的索引标识,以及所述候选索引词的数量,获取所有所述候选索引词,其中,相邻的所述候选索引词的索引标识连续;
推送所有所述候选索引词。
2.根据权利要求1所述的方法,其特征在于,索引数据库中存储有查询文件,所述查询文件包括查询索引区、查询内容区;所述查询索引区用于存储所述查询列表,所述查询索引区还用于指示所述目标索引词在所述查询内容区的存储位置,所述查询内容区用于存储所述索引数据库中的所有索引词。
3.根据权利要求2所述的方法,其特征在于,所述索引数据库中还存储有字典文件,所述字典文件包括:字典元区和字典内容区,所述字典元区用于存储所有索引词的编码值,以及与每个所述索引词的编码值对应的双数组编码基base值和双数组编码校验check值在所述字典内容区的存储位置,所述字典内容区用于存储每个所述索引词的编码值对应的base值和check值;
所述根据所述查询列表,确定所述目标索引词的索引标识,以及包括所述查询词的候选索引词的数量之前,还包括:
根据所述查询词、每个所述索引词的编码值对应的base值和check值,确定所述查询列表中包含有与所述查询词的编码值相同的目标索引词。
4.根据权利要求3所述的方法,其特征在于,所述查询词包含有i个字符,所述确定所述查询列表中包含有与所述查询词的编码值相同的目标索引词,包括:
根据所述查询词的第i个字符的Unicode码,以及第一字符串的编码值对应的base值,在所述字典元区中获取第二字符串的编码值,所述第一字符串为:从所述查询词的首字符开始至第i-1个字符形成的字符串,所述第二字符串为:从所述首字符开始至所述第i字符形成的字符串;
若所述第二字符串的编码值对应的check值为所述第i-1个字符的Unicode码,则确定所述查询列表中包含有与所述查询词的编码值相同的目标索引词,所述第二字符串的编码值为所述查询词的编码值,i为大于1的整数;
其中,i等于1时,所述查询词的Unicode码为所述查询词的编码值。
5.根据权利要求4所述的方法,其特征在于,所述根据所述目标索引词的索引标识,以及所述候选索引词的数量,获取所有所述候选索引词,包括:
根据所述目标索引词的索引标识,在所述查询索引区确定所述目标索引词在所述查询内容区的存储位置;
根据所述目标索引词在所述查询内容区的存储位置和所述候选索引词的数量,在所述查询内容区中获取所有所述候选索引词。
6.根据权利要求3所述的方法,其特征在于,所述获取查询词之前,还包括:
根据每个所述索引词中每个字符的Unicode码和每个所述索引词的长度,对所有索引词进行排序,生成索引词列表;
根据所述索引词列表,建立所述查询列表、所述字典文件和所述查询文件。
7.根据权利要求6所述的方法,其特征在于,所述生成索引词列表,包括:
依次遍历每个所述索引词中每个字符的Unicode码,按照每个所述索引词中每个字符的Unicode码的顺序,获取待生成的所述索引词列表中的索引词的第一排序;
若存在至少两个索引词中至少一个字符的Unicode码的顺序相同,则按照所述至少两个索引词的长度,在所述第一排序中调整所述至少两个索引词的顺序,得到调整后的第一排序;
根据所述调整后的第一排序、每个所述索引词,每个所述索引词的索引标识,生成索引词列表。
8.根据权利要求6或7所述的方法,其特征在于,所述根据所述索引词列表,建立所述查询列表、所述字典文件和所述查询文件,包括:
根据所述索引词列表,获取具有相同首字符的索引词对应的索引树,所述索引树包括多个节点,每个所述节点包括所述具有相同首字符的索引词的一个字符;其中,每个所述节点对应的索引标识为:所述索引词列表中,以所述节点中的字符和所述节点的父节点的所有字符组成的索引词的索引标识,每个所述节点对应的数量为所述索引词列表中包括所述索引词的候选索引词的数量;
对所述索引树的每个节点对应的索引词进行双数组编码,获取每个所述索引词的编码值,以及每个所述索引词的编码值对应的base值和check值;
根据所述索引树中每个所述节点对应的索引词的编码值、每个所述节点对应的索引标识和数量,建立所述查询列表和所述查询文件;
根据所述索引树中每个所述节点对应的索引词的编码值,以及每个所述索引词的编码值对应的base值和check值,建立所述字典文件。
9.一种查询设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述查询设备执行权利要求1-8任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机执行指令,当所述计算机执行指令被处理器执行时,实现权利要求1-8任一项所述的方法。
CN201910297346.5A 2019-04-15 2019-04-15 查询方法、设备和存储介质 Pending CN111831876A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910297346.5A CN111831876A (zh) 2019-04-15 2019-04-15 查询方法、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910297346.5A CN111831876A (zh) 2019-04-15 2019-04-15 查询方法、设备和存储介质

Publications (1)

Publication Number Publication Date
CN111831876A true CN111831876A (zh) 2020-10-27

Family

ID=72914521

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910297346.5A Pending CN111831876A (zh) 2019-04-15 2019-04-15 查询方法、设备和存储介质

Country Status (1)

Country Link
CN (1) CN111831876A (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101398830A (zh) * 2007-09-27 2009-04-01 阿里巴巴集团控股有限公司 词库模糊查询方法及词库模糊查询***
KR20100053269A (ko) * 2008-11-12 2010-05-20 엔에이치엔(주) 추천 질의어 제공 방법 및 시스템
CN102768681A (zh) * 2012-06-26 2012-11-07 北京奇虎科技有限公司 一种用于搜索输入的推荐***及方法
CN103092992A (zh) * 2013-02-17 2013-05-08 南京师范大学 基于Key/Value型NoSQL数据库的矢量数据先序四叉树编码和索引方法
CN107341165A (zh) * 2016-04-29 2017-11-10 上海京东到家元信信息技术有限公司 搜索框处进行提示显示的方法和装置
CN108227954A (zh) * 2017-12-29 2018-06-29 北京奇虎科技有限公司 一种提供搜索输入联想词的方法、装置及电子设备
US20180260469A1 (en) * 2017-03-08 2018-09-13 Centri Technology, Inc. Fast indexing and searching of encoded documents

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101398830A (zh) * 2007-09-27 2009-04-01 阿里巴巴集团控股有限公司 词库模糊查询方法及词库模糊查询***
KR20100053269A (ko) * 2008-11-12 2010-05-20 엔에이치엔(주) 추천 질의어 제공 방법 및 시스템
CN102768681A (zh) * 2012-06-26 2012-11-07 北京奇虎科技有限公司 一种用于搜索输入的推荐***及方法
CN103092992A (zh) * 2013-02-17 2013-05-08 南京师范大学 基于Key/Value型NoSQL数据库的矢量数据先序四叉树编码和索引方法
CN107341165A (zh) * 2016-04-29 2017-11-10 上海京东到家元信信息技术有限公司 搜索框处进行提示显示的方法和装置
US20180260469A1 (en) * 2017-03-08 2018-09-13 Centri Technology, Inc. Fast indexing and searching of encoded documents
CN108227954A (zh) * 2017-12-29 2018-06-29 北京奇虎科技有限公司 一种提供搜索输入联想词的方法、装置及电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
曹广顺;呙维;朱欣焰;佘冰;: "一种基于key-value数据库的快速地名地址输入提示方法", 计算机应用研究, no. 11, pages 3334 - 3338 *

Similar Documents

Publication Publication Date Title
CN108304444B (zh) 信息查询方法及装置
US8171029B2 (en) Automatic generation of ontologies using word affinities
CN108712519B (zh) Ip地址的定位方法、装置及存储介质
CN111460311A (zh) 基于字典树的搜索处理方法、装置、设备和存储介质
EP3072076B1 (en) A method of generating a reference index data structure and method for finding a position of a data pattern in a reference data structure
CN101794307A (zh) 基于互联网分词思想的车载导航poi搜索引擎
CN111339382A (zh) 字符串数据检索方法、装置、计算机设备及存储介质
Haj Rachid et al. A practical and scalable tool to find overlaps between sequences
CN111198936B (zh) 一种语音搜索方法、装置、电子设备及存储介质
CN111582967A (zh) 内容搜索方法、装置、设备及存储介质
CN106407221B (zh) 地址数据检索方法及装置
CN102385597B (zh) 一种poi的容错搜索方法
CN111797279B (zh) 一种存储数据的方法及装置
CN108345607B (zh) 搜索方法和装置
CN106844553B (zh) 基于样本数据的数据探测和扩充方法及装置
CN111190937B (zh) 籍贯信息的查询方法、装置、电子设备及存储介质
CN111831876A (zh) 查询方法、设备和存储介质
CN108776705B (zh) 一种文本全文精确查询的方法、装置、设备及可读介质
CN110347925A (zh) 信息处理方法及计算机可读存储介质
CN108376054B (zh) 一种对标识数据进行索引的处理方法及装置
CN116521733A (zh) 一种数据查询方法及装置
CN113297204B (zh) 索引生成方法及装置
JP2012069059A (ja) 特定文字列除き文字列検索支援システムおよび検索支援方法、ならびにそのためのプログラム
CN113918796A (zh) 信息搜索方法、装置、服务器及存储介质
CN109726254B (zh) 一种三元组知识库的构建方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination