词库模糊查询方法及词库模糊查询系统的制作方法

文档序号:6612767阅读:276来源:国知局

专利名称::词库模糊查询方法及词库模糊查询系统的制作方法
技术领域
:本发明涉及词库查询技术,特别是涉及词库查询方法及词库查询系统。技术背景目前,信息检索已经发展到网络化和智能化的阶段。信息检索的对象从相对封闭、稳定一致、由独立数据库集中管理的信息内容扩展到开放、动态、更新更快、分布广泛、管理松散的Web内容;信息检索的用户也由原来的情报专业人员扩展到包括商务人员、管理人员、教师学生、各专业人士等在内的普通大众,他们对信息检索从结果到方式提出了更高、更多样化的要求。适应网络化、智能化以及个性化的需要是目前信息检索技术发展的新趋势。对于大量数据的存储和检索,目前通常采用索引结构来实现,一般常用的索引结构包括顺序索引、散列(Hash)索引和分级索引。顺序索引是早期经常采用的一种静态的索引结构,搜索数据时是按顺序搜索或者折半搜索,其优点是索引结构简单,占用空间小,但是顺序索引查询速度慢,且每增加一个新词都需要重新排序,插入或删除数据时效低。后来相关研究人员提出一种散列(Hash)索引,散列(Hash)索引是在表项的存储位置与它的关键码之间建立一个确定的对应函数关系,使每个关键码与结构中的一个存储位置相对应。搜索时只需要对表项的关键码进行函数计算,求得的函数值即是表项的存储位置。避免了多次关键码的比较,因此搜索速度比较快。但是在数据量比较大时,要生成一个完美的Hash函M^列表是很费时间的,并且会造成严重的空间浪费。分级索引是现在较为常用的搜索方法,它是将词分成若干部分,为每一部分分别建立索引,Trie索引树法是典型的分级搜索方法,它来自英文单词"retrieval"的缩写,Trie索引树法可以建立有效的数据;险索组织结构,虽然其结构较为复杂,但是好的Trie索引树法用在合适的环境下可以具有很高的查询效率。国家专利局专利号为200510130690.3的发明专利^Hf了一种完美双数组Trie树词典管理与检索方法,它是将Trie树转换成两个线性数组表示,并在构造过程中提出了一种优化策略。请参见图1,其为现有的双数组Trie树的结构示意图。双数组Trie树是由两个整数数组构成,一个是基值数组base[],另一个是校验值数组check[]。base[]数组中的每一个元素相当于Trie树的一个节点,其值做状态转移的基值,图1中base[]数组的字母S、表示一个词的第一个字,字母A、B表示以字母S作为首字的词的第二个字,字母C、D、E表示、以字母S作为首字、字母A作为第二个字的词的第三个字,字母F表示以字母S作为首字、字母B作为第二个字的词的第三个字。check[]数组与base[]数组——对应,check值相当于校验值,用于检查该状态是否存在,即表示对应状态的前一状态,图1中base[]数组的字母A、B对应于check[]数组中的字母S,说明字母A所在的词的前一字母为S,字母B所在的词的前一字母为S。对于从状态i到状态t的一个转移,必须满足如下两个条件1.base[i]+c=t2.check[t;|=i其中c是输入变量。因为数组中的状态标志是预先进行编码的,有其各自的序列号,因此,只需按照状态标志进行状态转移即可完成词语的查询。并且,该专利还提出在构建数组时优先处理分支较多的节点,有利于减少冲突,避免数组增长过大,减少数据稀疏。由此可以看出,运用双数组Trie树进行搜索对于一个词的查询时间只与它的长度有关,与数据库中数据量的大小无关,因此其查询速度是非常快的。但是它存在着以下的缺陷由于双数组Trie树搜索树只能根据输入状态判断是否为下个状态,而无法预测潜在的下个状态,因此无法实现模糊查询功能,也就是说其只能判断字母A是否是词或词的前面一部分,而无法给出以字母A为关键字得到的一系列相关的词,例如在google中输入"苹果"就会出现"苹果网"、"苹果电脑"、"苹果手机"等等的下拉列表,而双数组Trie树搜索树却无法实现这个功能,这在搜索技术日趋完善的今天是一个缺乏竟争力的缺陷。为此,现有技术提出了模糊查询这个概念,也就是说,通过"苹果"能模糊查询到"苹果网"、"苹果电脑"、"苹果手机"等等。这也是现有的百度、google等搜索引擎已实现的一个技术,以此来方便用户的使用。现有实现模糊查询功能的一种常见做法是构建一个小型的词库的搜索引擎应用,并利用倒排表来进行查询。具体包括(1)建立搜索词库引擎的索引结构,所述搜索词库引擎的索引结构是指对词库中的每个词里面的每个字都建立索引,并且保存字所在词中的位置信息。请参阅图2,其为词库搜索引擎的索引结构的一示例图。(2)查询,找到索引结构中要求查询的查询语的每个字的倒排表,然后再对该些倒排表做"和"运算,得到的即为包含该查询语的模糊查询。举个例子来说,如果关键词为"ab",则去索引结构中查询第一个位置为"a,,和第二个位置为"b"的倒排表,得到二个有序列表,然后对这两个有序列表做带有位置比较的"和"操作,得到的即为以"ab,,开头的所有词,其为"ab"模糊查询所得到的词。上述查询方法虽然能查询出"ab"相关的词,但是存在着以下的缺陷对于有一定规模的词库,用这种技术实现模糊查询时,序列表进行"和"运算的操作将是查询速度的瓶颈,其查询速度非常慢。
发明内容本发明的目的在于提供一种词库模糊查询方法及词库模糊查询系统,以解决现有的模糊查询速度慢的技术问题。为了达到上述目的,本发明提供了公开了一种词库模糊查询方法,包括(l)建立词条数据结构(1-1)将词库中的所有词条顺序存储在词条数据结构的词条存储单元;(l-2)构建词条数据结构的正向词条索引结构先将所有词条的所有字一一对应一唯一编码,再构建双数组Trie,确定基值数组和对应的校验值数组,后存储每一词缀在词条存储单元中本词缀开头的所有词的存储地址信息,词缀和基值数组、校验值数组的一数组单元——对应;(2)当接收到查询语时,先获得查询语中所有字的编码,再利用双数组Trie找到该查询语所在的基值数组单元,后找到该基值数组单元对应的词缀在词条存储单元中本词缀开头的所有词的存储地址信息,在所述词条存储单元找到对应的所有词。步骤(l-2)为建立一slot数组,slot数组的每一数组单元表示一词缀,所述每一数组单词缀对应的基值数组数值、校验值数组数值。存储每一词缀在词条存储单元中本词缀开头的所有词的存储地址信息进一步为存储每一词缀在词条存储单元中本词缀开头的第一个词的偏移地址信息和以本词缀开头的最后一个词的偏移地址信息,所述偏移地址信息为所述词基于词条存储单元首地址的偏移地址。在步骤(l)中还包括(l-3)构建词条数据结构的反向词条索引结构先将所有词条的所有字一一对应一唯一编码,再将词库中的词反转后用Trie树结构表示,随后构建双数组Trie,确定基值数组和对应的校验值数组,然后存储每一反转后的反转词缀在词条存储单元中以本词缀结尾的所有词的存储地址信息,反转词缀和基值数组、校验值数组的一数组单元--对应。本发明还包括当接收到查询语时,反转查询语,后获得反转后查询语中各个字的编码,查找反向词条索引结构获得对应的基值数组单元,后找到该基值数组单元对应的词缀在词条存储单元中本词缀结尾的所有词的存储地址信息,在所述词条存储单元找到所有词。建立一第二slot数组,第二slot数组的每一数组单元表示一反转后的反转词缀,所述每一数组单元中存储该词缀在词条存储单元中本词缀结尾的所有词的存储地址信息、该反转词缀对应的基值数组数值、校验值数组数值。一种词库模糊查询系统,它包括一词条数据结构,包括词条存储单元和正向词条索引结构,一词条存储单元,用于以词条为单元顺序存储词库中的所有词条;一正向词条索引结构,其包括一编码映射单元用于存储所有词条的所有字与唯一编码的——对应;一slot数组,slot数组的每一数组单元表示一词缀,所述每一数组单元中存储该词缀在词条存储单元中本词缀开头的所有词的存储地址信息、该词缀对应的基值数组数值、校验值数组数值;一查询处理器,进一步包括正向词条查询单元,用于接收到查询语时,先获得查询语中所有字的编码,再利用双数组Trie找到该查询语所在的基值数组单元,后找到该基值数组单元对应的词缀在词条存储单元中本词缀开头的所有词的存储地址信息,在所述词条存储单元找到对应的所有词。词条数据结构还包括一反向词条索引结构包括一第二slot数组,第二slot数组的每一数组单元表示一反转后的反转词缀,所述每一数组单元中存储该词缀在词条存储单元中本词缀结尾的所有词的存储地址信息、该反转词缀对应的基值数组数值、校验值数组数值。查询处理器,进一步还包括反向词条查询单元,当接收到查询语时,反转查询语,后获得反转后查询语中各个字的编码,查找反向词条索引结构获得对应的基值数组单元,后找到该基值数组单元对应的词缀在词条存储单元中本词缀结尾的所有词的存储地址信息,在所述词条存储单元找到所有词。一种词库模糊查询方法,包括(l)建立词条数据结构(l-l)将词库中的所有词条顺序存储在词条数据结构的词条存储单元;(l-2)构建词条数据结构的反向词条索引结构先将所有词条的所有字一一对应一唯一编码,再构建双lt组Trie,确定基值数组和对应的校验值数组,后存储每一词缀在词条存储单元中本词缀开头的所有词的存储地址信息,词缀和基值数组、校验值数组的一数组单元——对应;(2)当接收到查询语时,反转查询语,后获得反转后查询语中各个字的编码,查找反向词条索引结构获得对应的基值数组单元,后找到该基值数组单元对应的词缀在词条存储单元中本词缀结尾的所有词的存储地址信息,在所述词条存储单元找到所有词。与现有技术相比,本发明具有以下的优点首先,本发明的查询系统中利用了双数组Trie技术查询速度快的优势来实现模糊查询的功能,克服了现有技术查询速度慢的缺陷。接着,本发明提供的正向词条索引结构中,仅存储以该词缀开始的第一个词条的偏移地址和最后一个词条的偏移地址,大量减少了存储空间。最后,本发明还提供反向词条索引功能,使本发明方案的查询更全面。图1为现有的双数组Trie树的结构示意图;图2为现有的为词库搜索引擎的索引结构的一示例图;图3为一种Trie树的结构示例图;图4为本发明一种词库模糊查询方法的流程图;图5为词条数据结构示意图;图6为本发明的正向词条索引结构的一示例图;图7为本发明的反向词条索引结构的一示例图。具体实施方式以下结合附图,具体说明本发明。,由于本发明人吸取了双数组Trie的精华后进行的发明创造,因此在具体介绍本发明的词库模糊查询之前,先介绍一下双数组Trie。如果要进行双数组Trie的查询,首先需要构建双数组Trie,确定基值数组和对应的校纟企值数组。假定词库中只有"啊,阿根廷,阿胶,阿拉伯,阿拉伯人,埃及,,这几个词。首先,对词库中所有出现的IO个汉字进行编码啊-1,阿-2,埃-3,根-4,胶-5,拉-6,及-7,廷-8,伯-9,人-10。这种编码并非是唯一的,只需要将词库中的所有字——对应一唯一编码即可,可以是顺序编码,也可以是釆用计算机中本身就已存在的每个汉字的对应编码。如果是前者,需要重新创建一编码映射单元,用于存储汉字和编码的一一对应关系,如果是采用后者编码方式,即可省略该编码映射单元,节省存储空间。然后,将词库用Trie结构进行表示,如图3所示。随后,一构建双数组Trie,确定基值数组base[]和对应的校验值数组check[]。对于每一个汉字,需要确定一个base值,使得对于所有以该汉字开头的词,在双数组中都能放下。例如,现在要确定"阿"字的base值,假设以"阿"开头的词的第二个字序列码依次为al,a2,a3......an,我们必须找到一个值i,使得base[i+a1],check[i+a1],base[i+a2],check[i+a2]......base[i+an],check[i+an]均为0。一旦找到了这个i,"阿"的base值就确定为i。用这种方法构建双数组Trie(Doublearraytrie),经过若干次遍历,将所有的词语放入双数组中,然后还要遍历一遍词表,修改base值。假设用负的base值表示该位置为词语。如果状态i对应某一个词,而且Base[i]=0,那么令Base[i]=(-l)*i,如果Base[i〗的值不是0,那么令Base[i]气-lfBase[i]。得到双数组如下表所示。需要说明的是,表l仅一种双数组的示例。表1<table>tableseeoriginaldocumentpage11</column></row><table>用上述方法生成的双数组,将"啊","阿","埃","阿根","阿拉","阿胶","埃及","阿拉伯","阿拉伯人","阿根廷"这些词缀均视为状态。词缀不同于传统意义的词缀概念,它可以是字"啊","阿","埃",也可以是词"阿胶","埃及","阿拉伯","阿拉伯人","阿根廷",也可以仅仅是前缀或后缀,如"阿根"、"阿拉"。每个状态均对应于数组的一个下标。例如设"阿根"的下标为i=8,那么check[i]的内容是"阿"的下标,而base[i]是"阿根廷"的下标的基值。"廷"的序列码为x=8,那么"阿根廷"的下标为base[i]+x=base[8]+8=12。也就是说,每个词缀和基值数组、校验值数组的一数组单元--对应。最后,具体查询过程为Do油learraytrie的查询过程其实就是一个DFA的状态转移过程,在Doublearraytrie中实现起来比较简单只需按照状态标志进行状态转移即可.例如查询"阿根廷",先根据"阿"的序列码b=2,找到状态"阿,,的下标2,再根据"根"的序列码d=4找到"阿根"的下标base[b]+d=8,同时根据check[base[b]+d]=b,表明"阿根"是某个词的一部分,可以继续查询。然后再找到状态"阿根廷"。它的下标为y-12,此时base[y]O,check[y]=base[b]+d=8,表明"阿根廷"在词表中,查询完毕。查询过程中我们可以看到,对于一个词语的查询时间是只与它的长度相关的,也就是说它的时间复杂度为O(l),因此其速度是极快的.本申请人经过长期思考,可以利用该双数组Trie查询速度快的优势,并能实现模糊查询的功能。请参阅图4,其为本发明一种词库模糊查询方法的流程图。它包括S110:建立词条数据结构Sll:将词库中的所有词条顺序存储在词条数据结构的词条存储单元;S12:构建词条数据结构的正向词条索引结构先将所有词条的所有字一一对应一唯一编码,再构建双数组Trie,确定基值数组和对应的校验值数组,后存储每一词缀在词条存储单元中本词缀开头的所有词的存储地址信息,词缀和基值数组、校验值数组的一数组单元——对应。请参阅图5,其为词条数据结构示意图。它包括词库头11和词库内容12组成。其中,词库头是词条的索引信息,而词库内容保存有词条的详细信息。词库内容即为词条存储单元,其存储单元中每个词条可以按关键字从小到大排序。这样,在正向查询时,只需要给出满足条件的第一个词条的存储地址信息和最后一个词条的存储地址信息,即可获得满足条件的所有词,从而节省了词库的索引空间。由于词条是按关键字从小大到排序的,因此以"苹果,,开始的关键字如"苹果","苹果汁,,,"苹果树"在词库内容中的位置都是紧挨着的,这样只需给出"苹果"和"苹果树"的存储地址信息,就可获取"苹果","苹果汁","苹果树"的详细信息。词库头11至少包括正向词条索引结构111。请参阅图6,其为本发明的正向词条索引结构的一示例图。它包括一编码映射单元,对词库中所有出现的每个字进行编码。这种编码并非是唯一的,只需要将词库中的所有字--对应一唯一编码即可,可以是顺序编码,也可以是采用计算机中本身就已存在的每个汉字的对应编码。如果是前者,需要重新创建一编码映射单元,用于存储汉字和编码的——对应关系,如果是采用后者编码方式,即可省略该编码映射单元,节省存储空间。它包括一slot数组,slot数组的每一数组单元表示一词缀,所述每一数组单元中存储该词缀在词条存储单元中本词缀开头的所有词的存储地址信息、该词缀对应的基值数组数值、校验值数组数值。存储每一词缀在词条存储单元中本词缀开头的所有词的存储地址信息进一步为存储每一词缀在词条存储单元中本词缀开头的第一个词的偏移地址信息startoffset和以本词缀开头的最后一个词的偏移地址信息endoffset,所述偏移地址信息为所述词基于词条存储单元首地址的偏移地址。还是以图3的词库为例,则生成的正向词条索引结构可以为表2。表2<table>tableseeoriginaldocumentpage13</column></row><table><table>tableseeoriginaldocumentpage14</column></row><table>构建词条数据结构的正向词条索引结构先将所有词条的所有字一一对应一唯一编码,再构建双数组Trie,确定基值数组和对应的校验值数组,后存储每一词缀在词条存储单元中本词缀开头的所有词的存储地址信息,词缀和基值数组、校验值数组的一数组单元——对应。而上述表2仅为正向词条索引结构的一示例图。构建正向词条索引结构的步骤具体可以如下首先,对查询的词的关键字进行编码,每个字(中文,英文)都对应一个唯一的编码,设编码后为a0,al,...,aN-l。接着,循环依次遍历每个编码,如果是第一个字,同时slots[aO]的check值为-1,则表示该字存在,保存slots[a0]的base值和a0值分别为preBase和preldx,继续,否则退出。(注:如果slots[i].check=-2,表示i这个位置没有被利用;如果slots[i].check--l,表示是首字;如果slots[i].checlO-0,表述i这个位置的字的前个位置是slots[i].check表示的位置)如果不是首字,i殳该字的编码为al,求出下个位置pos-al+abs(preBase)。如果slots[pos].check等于preldx,表示找到以ala2......al开始的串,保存slots[pos]的base值和pos值分别为preBase和preldx,继续,否则退出。随后,获取以编码为a0,al,...,aN-l所表示的关键字开始的所有词条的偏移量范围。如果处理完最后一个字,获取slots[preldx].StartOffset和slots[preldx].endOffset,这两个值表示了以编码为a0,al,...,aN-1所表示的关键字开始的所有词条的偏移量的范围。本发明可以通过偏移量idx定位到词条详细信息位置的算法得到词条详细信息,此时idx的值为slots[preIdx].StartOffset<=idx<=slots[preIdx].endOffset.如果中途退出,没有处理完最后一个字,则表明没有以al,a2,...,aN所表示的关键字开始的词条。 S120:当接收到查询语时,先获得查询语中所有字的编码,再利用双数组Trie找到该查询语所在的基值数组单元,后找到该基值数组单元对应的词缀在词条存储单元中本词缀开头的所有词的存储地址信息,在所述词条存储单元找到对应的所有词。还是以表2为例,例如查询"阿根",先根据"阿"的序列码b-2,找到状态"阿"的下标2,再根据"根"的序列码d=4找到"阿根"的下标base[b]+d=8,找到slot[8]对应的"startoffset"和"endoffset",查询词条存储单元,即可获得对应的词,该些词即为"阿根"的模糊查询结果。本发明除了提供正向查询之外,还提供反向查询。在词库头中还包括反向词条索引结构。反向词条索引结构包括一第二slot数组,第二slot数组的每一数组单元表示一反转后的反转词缀,所述每一数组单元中存储该词缀在词条存储单元中本词缀结尾的所有词的存储地址信息、该反转词缀对应的基值数组数值、校验值数组数值。请参阅图7,其为反向词条索引结构的一示例图。构建词条数据结构的反向词条索引结构先将所有词条的所有字一一对应一唯一编码(可以利用正向词条索引结构的编码方法),再将词库中的词反转后用Trie树结构表示,随后构建双数组Trie,确定基值数组和对应的校验值数组,然后存储每一反转后的反转词缀在词条存储单元中以本词缀结尾的所有词的存储地址信息,反转词缀和基值数组、校验值数组的一数组单元一一对应。当接收到查询语时,反转查询语,后获得反转后查询语中各个字的编码,查找反向词条索引结构获得对应的基值数组单元,后找到该基值数组单元对应的词缀在词条存储单元中本词缀结尾的所有词的存储地址信息,在所述词条存储单元找到所有词。事实上,反向查询和正向查询类似,唯一的区别是由于含有共同结束部分的关键字的在词库存储单元中的偏移量并不有序,因此不能用startOffet, endOffset来表示一段范围,而必须穷举每个词缀在词库存储单元中的偏移量,因此结构稍微有些改变。此结构也是对Doublearraytrie索51结构的改进,在base和check的基础上增加了Offset和Offset所指向的偏移量列表。其构建、查询过程和标准的Doublearraytrie雷同,唯一的区别是在构建时增加了对Offset和Offset所指向的偏移量列表的赋值,查询过程中,在完成标准的Doublearraytrie查询以后,获取当前slot的Offset所指的偏移量列表(从小到大排列)为Doublearraytrie的最终查询结果。如假设以"手机"结束的关键字有"手机","mp3手机","苹果手机","诺基亚手机,,。由于含有相同结束成分的关键字在puredata中的位置并不连续,因此其在puredata的偏移量并不连续,假设为2,6,11,78。在反向词条索引结构,"手机"的"手"字所在的slot的offset所指的偏移量列表的个数N为4,偏移量分别为2,6,11,78。另外,还需要说明的是,在构建双数组Trie,确定基值数组和对应的校验值数组时,是反转构建的"机手"、"机手3pm"、"机手果苹"、"机手亚基诺"这样来用Trie树结构表示,进而确定基值数组和校验值数组。因此,查询查询语的时,先要将查询语反转后,再确定查询语中每个字对应的编码,查找反向词条索引结构获得对应的基值数组单元,后找到该基值数组单元对应的词缀在词条存储单元中本词缀结尾的所有词的存储地址信息,在所述词条存储单元找到所有词。通过上述的方式,查询即可以是正向查询,也可以是反向查询,使得查询更为全面,查询效果更好。这种既可以正向查询,也可以是反向查询的方式我们称之为双向查询,在双向查询时,可以先利用正向查询获得偏移量范围,再利用反向查询获得对应的偏移量列表,再根据该些偏移量信息到词库存储单元中找到每一对应的词,所述词即是查询语模糊查询到的词。需要说明的是,由于本发明对词(词缀)的编码是唯一的,因此本发明的搜索结果具有唯一性,而由于Hash算法具有一定的冲突率,通常不能保证Hash函数序列表的唯一性,因此需要有其它的措施(如开链、闭链等)来保证其搜索结果的唯一性,因此本发明的搜索方法具有更快的搜索速度。如用本发明,"苹果"的编码是12223,可以确定编码为12223的只对应关键字"苹果".但用Hash算法时,"苹果"的编码是12223,"栗子"的编码也可能是12223,所以这个时候得需用其它措施来保证查询的是"苹果,,还是"栗子",因此本发明的搜索方法更有更快的速度。本发明除了仅支持正向查询、双向查询之外,还可以仅支持词库反向查询。一种词库模糊查询方法,包括(1)建立词条数据结构(1-1)将词库中的所有词条顺序存储在词条数据结构的词条存储单元;(l-2)构建词条数据结构的反向词条索引结构先将所有词条的所有字一一对应一唯一编码,再构建双数组Trie,确定基值数组和对应的校验值数组,后存储每一词缀在词条存储单元中本词缀开头的所有词的存储地址信息,词缀和基值数组、校验值数组的一数组单元——对应;(2)当接收到查询语时,反转查询语,后获得反转后查询语中各个字的编码,查找反向词条索引结构获得对应的基值数组单元,后找到该基值数组单元对应的词缀在词条存储单元中本词缀结尾的所有词的存储地址信息,在所述词条存储单元找到所有词。反向查询上述已公开,在此就不再赘述。以上公开的仅为本发明的几个具体实施例,但本发明并非局限于此,任何本领域的技术人员能思之的变化,都应落在本发明的保护范围内。权利要求1、一种词库模糊查询方法,其特征在于,包括(1)建立词条数据结构(1-1)将词库中的所有词条顺序存储在词条数据结构的词条存储单元;(1-2)构建词条数据结构的正向词条索引结构先将所有词条的所有字一一对应一唯一编码,再构建双数组Trie,确定基值数组和对应的校验值数组,后存储每一词缀在词条存储单元中本词缀开头的所有词的存储地址信息,词缀和基值数组、校验值数组的一数组单元一一对应;(2)当接收到查询语时,先获得查询语中所有字的编码,再利用双数组Trie找到该查询语所在的基值数组单元,后找到该基值数组单元对应的词缀在词条存储单元中本词缀开头的所有词的存储地址信息,在所述词条存储单元找到对应的所有词。2、如权利要求l所述的方法,其特征在于,步骤(l-2)为建立一slot数组,slot数组的每一数组单元表示一词缀,所述每一数组单元中存储该词缀在词条存储单元中本词缀开头的所有词的存储地址信息、该词缀对应的基值数组数值、校验值数组数值。3、如权利要求1或2所述的方法,其特征在于,存储每一词缀在词条存储单元中本词缀开头的所有词的存储地址信息进一步为存储每一词缀在词条存储单元中本词缀开头的第一个词的偏移地址信息和以本词缀开头的最后一个词的偏移地址信息,所述偏移地址信息为所述词基于词条存储单元首地址的偏移地址。4、如权利要求l所述的方法,其特征在于,在步骤(l)中还包括(l-3)构建词条数据结构的反向词条索引结构先将所有河条的所有字一一对应一唯一编码,再将词库中的词反转后用Trie树结构表示,随后构建双数组Trie,确定基值数组和对应的校验值数组,然后存储每一反转后的反转词缀在词条存储单元中以本词缀结尾的所有词的存储地址信息,反转词缀和基值数组、校验值数组的一数组单元——对应。5、如权利要求4所述的方法,其特征在于,还包括当接收到查询语时,反转查询语,后获得反转后查询语中各个字的编码,查找反向词条索引结构获得对应的基值数组单元,后找到该基值数组单元对应的词缀在词条存储单元中本词缀结尾的所有词的存储地址信息,在所述词条存储单元找到所有词。6、如权利要求5所述的方法,其特征在于,建立一第二slot数组,第二slot数组的每一数组单元表示一反转后的反转词缀,所述每一数组单元中存储该词缀在词条存储单元中本词缀结尾的所有词的存储地址信息、该反转词缀对应的基值数组数值、校验值数组数值。7、一种词库^t糊查询系统,它包括一词条数据结构,包括词条存储单元和正向词条索引结构,一词条存储单元,用于以词条为单元顺序存储词库中的所有词条;一正向词条索引结构,其包括一编码映射单元用于存储所有词条的所有字与唯一编码的——对应;一slot数组,slot数组的每一数组单元表示一词缀,所述每一数组单元中存储该词缀在词条存储单元中本词缀开头的所有词的存储地址信息、该词缀对应的基值数组数值、校验值数组数值;一查询处理器,进一步包括正向词条查询单元,用于接收到查询语时,先获得查询语中所有字的编码,再利用双数组Trie找到该查询语所在的基值数组单元,后找到该基值数组单元对应的词缀在词条存储单元中本词缀开头的所有词的存储地址信息,在所述词条存储单元找到对应的所有词。8、如权利要求7所述的系统,其特征在于,词条数据结构还包括一反向词条索引结构包括一第二slot数组,第二slot数组的每一数组单元表示一反转后的反转词缀,所述每一数组单元中存储该词缀在词条存储单元中本词缀结尾的所有词的存储地址信息、该反转词缀对应的基值数组数值、校验值数组数值。9、如权利要求8所述的系统,其特征在于,查询处理器,进一步还包括反向词条查询单元,当接收到查询语时,反转查询语,后获得反转后查询语中各个字的编码,查找反向词条索引结构获得对应的基值数组单元,后找到址信息,在所述词条存储单元找到所有词。10、一种词库模糊查询方法,其特征在于,包括(1)建立词条数据结构(1-1)将词库中的所有词条顺序存储在词条数据结构的词条存储单元;(l-2)构建词条数据结构的反向词条索引结构先将所有词条的所有字一一对应一唯一编码,再构建双数组Trie,确定基值数组和对应的校验值数组,后存储每一词缀在词条存储单元中本词缀开头的所有词的存储地址信息,词缀和基值数组、校验值数组的一数组单元——对应;(2)当接收到查询语时,反转查询语,后获得反转后查询语中各个字的编码,查找反向词条索引结构获得对应的基值数组单元,后找到该基值数组单述词条存储单元找到所有词。全文摘要一种词库模糊查询方法,包括(1)建立词条数据结构(1-1)将词库中的所有词条顺序存储在词条数据结构的词条存储单元;(1-2)构建词条数据结构的正向词条索引结构先将所有词条的所有字对应一编码,再构建双数组Trie,确定基值数组和对应的校验值数组,后存储每一词缀在词条存储单元中本词缀开头的所有词的存储地址信息,词缀和基值数组、校验值数组的一数组单元对应;(2)当接收到查询语时,先获得查询语中所有字的编码,再利用双数组Trie找到该查询语所在的基值数组单元,后找到该基值数组单元对应的词缀在词条存储单元中本词缀开头的所有词的存储地址信息,在词条存储单元找到对应的所有词。本方法的查询速度非常快。文档编号G06F17/30GK101398830SQ20071016231公开日2009年4月1日申请日期2007年9月27日优先权日2007年9月27日发明者孙海涛,施行向申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1