文本字符串搜索设备、文本字符串搜索方法和文本字符串搜索程序的制作方法_4

文档序号:9713574阅读:来源:国知局
分数等级Rn计算出的第一 RMQ结构。
[0113]关键字的数据结构包括根据特里树T、第二RMQ结构和字符串分数等级T。产生的Patricia树Tc。使用DFUDS表示来表示Patricia树Tc的树结构。此外,在Patricia树Tc中,准备与节点的数量相同数量的比特串,以仅区分树结构的叶节点。
[0114]一般的Patricia树保持与各节点相对应的字符串。然而,该示例实施例的搜索信息存储单元50移除与各节点相对应的字符串,并仅存储表示节点之间的亲子关系的树结构。稍后将描述仅存储树结构的原因。
[0115]在以下说明中,如图5所示出的,假设以字典式顺序根据第一字符对各关键字分类,并用该顺序将关键字ID指派给关键字。此外,假设以字典式顺序从结尾对前缀分类,并用该顺序向如缀指派如缀ID。此外,由[sP,eP]表不如缀ID的范围,并由[ss,es]表不表不如缀的集合Si的沮围。
[0116]前缀集合识别单元20识别以输入字符串结尾的前缀ID的范围[sP,eP]。具体地,前缀集合识别单元20通过使用xbw识别范围[Ss,es],在范围[Ss,es]中前缀的末尾是输入字符串。然而,该范围[ss,es]是集合S上的范围,并且因此有必要将该范围转换为前缀ID的范围[sP,eP]。因此,前缀集合识别单元20通过识别哪个数字1是包括在5^上的[Ss,es]中的第一个1还是最后一个1来识别[sP,eP]。这是因为在Slastl设置为1的元素以相同顺序一一对应于前缀ID。
[0?17]如缀识别单兀31从识别的如缀ID的范围[sP,eP]中识别具有最尚如缀分数的如缀。具体地,前缀识别单元31通过使用第一 RMQ结构来识别[sP,eP]范围内具有最高前缀分数的前缀的位置。此外,由^表示这里识别的前缀的位置。
[0118]搜索管理单元30从识别的前缀的位置iP识别以前缀开始的关键字的范围。下文,由[Sk,ek]标记以识别的前缀开始的关键字的范围。具体地,搜索管理单元30首先识别具有与前缀的位置^相对应的前缀的最后一个节点,作为S上的相应位置is。
[0119]后续地,搜索管理单元30还原在xbw中表示该前缀的字符串。具体地,搜索管理单元30通过连接通过从由xbw中由第is行所表示节点追踪朝向双亲的树所获得的字符,来还原字符串。用于从节点移向双亲的次数与前缀的长度相等。
这时,关于所追踪的s上的每个位置is,搜索管理单元30计算根据满足Siast [if] = 1的位置if的差异d = is-1f,其中位置if位于is的该侧上并离其最近。然后,搜索管理单元30用与追踪朝向双亲的树的顺序相反的顺序,将所计算的值存储到数组d中。然而,除非存在以上if,否则搜索管理单元30将用if = 0计算出的值存储到数组d中。
[0121]后续地,搜索管理单元30根据在Patricia树Tc中数组d中所存储的值的顺序,将目标位置从双亲节点移动至子节点。然而,如果数组d中相应值是1,则搜索管理单元30忽略该值并执行针对下一个值的处理。
[0122]因为根据同一特里树T产生了xbw和T。,所以除了该节点仅具有一个子女时,每个节点的子女的数量与顺序一致。因此,根据数组d移动T。上的目标位置,由此该位置到达与前缀相对应的T。上的节点uc。
[0123]搜索管理单元30通过使用DFUDS来识别与所到达的节点u。的后代相对应的关键字的范围[sk,ek]。包括在范围[sk,ek]中的所有关键字是节点?的子女,并且因此可以说[Sk,ek]指不以识别的如缀开始的关键字的范围。
[0? 24]字符串识别单兀32从识别的关键字范围[sk,ek]中识别具有最尚字符串分数的关键字ID(以下,由ik表示关键字ID)。具体地,字符串识别单元32通过使用第二 RMQ结构来识别范围[Sk,ek]内具有最高前缀分数的关键字的位置ik。
[0125]字符串识别单元32根据识别的关键字ID的位置ik来识别关键字的字符串。位置ik与Patricia树TcJ:的第ik个叶节点m相对应。因此,字符串识别单元32从m追踪朝向的双亲节点Patricia树T。,并用与追踪朝向双亲的树的顺序相反的顺序将子节点数存储到数组d中。字符串识别单元32能够通过根据数组d依次从根追踪xbw,能够识别与m相对应的xbw上的节点的位置。顺便提及,如果子节点是一个,可以在不参照数组d的情况下无条件地将该位置移向叶节点。因此,与Patr i c i a树Tc的叶节点相对应的特里树的节点的子女没有分枝。因此,字符串识别单元32能够通过追踪单链精确地还原关键字。
[0126]如上所述,从xbw获得关键字信息。因此,仅需要通过移除Patricia树中各节点的字符串,仅留下节点之间的亲子关系。
[0127]例如,图5中,可以通过从根选择第一子女并且然后选择所选节点处的第一子女到达“$ab”。因此,搜索管理单元30可以在数组d中存储信息“d = 1,1”,以便识别所选节点。
[0128]以下,将通过使用图5中所示的示例来描述该示例实施例的字符串搜索设备的特定操作。在该说明书中,假设搜索查询P=“ab”且k = 2。以P结尾的S上的范围是[Ss,es] = [7,9]。与其相对应的仏上的范围是[81),61)] = [4,5]。该范围中最高前缀分数的位置是;[1) = 4。这与S上的位置^ = 8相对应。与以上匕对应的前缀是“$ab”。由于二者均是第一子女,所以获得了数组 d = l,l。
[0129]通过在T。上的根节点处开始,移动至第一子节点,并再次移动至第一子节点,到达与“$ab”相对应的节点。节点下的最高字符串分数是9,并且通过关键字ID = 1区分关键字。因此,获得关键字ID和字符串分数的配对〈1,9>。它是图5中的具有字典中最高字符串分数的关键字。
[0130]次最高排序的关键字是同一前缀的第二关键字或任意其他前缀的第一关键字。同一前缀的第二关键字是通过关键字ID = 0区分的关键字,并且其字符串分数是3(以下,被称为〈0,3>)。同时,为了找到任意其他前缀的第一关键字,需要识别排除了以上被识别为最高前缀i P = 4的前缀的范围。前缀的范围被划分为两组,排除前缀i P = 4,通过其识别范围[s P,61)] = [5,5]。然后,在范围[8[),&] = [5,5]中识别具有最高前缀分数的前缀,以执行识别相应关键字中具有最高字符串分数的关键字的过程。在图5中所示的示例中,该过程与识别及前缀“ $cab”开始的关键字中具有最高字符串查询分数的关键字相对应。结果,重新识别关键字ID和字符串分数的配对〈2,4>。
[0131]尽管至此识别了三个候选配对,但是排除了具有低分的配对〈0,3>。最后剩余的配对是〈1,9>和〈2,4>。在识别这两个配对之后,执行从各个配对还原关键字的处理。T。中的路径d分别是(1,2)和(2,1)。通过从根追踪xbw唯一找到与关键字相对应的源字典中的关键字,由此获得关键字“$abcc#”和“$cab#”。
[0132]以下描述了在使用该示例实施例中所描述的数据结构的情况下的数据尺寸。假设提供了特里树T和分数等级Rk,则满足“节点t的数量 > 关键字的数量1”。大体上来说,节点t的数量大致是关键字1数量的10倍。
[0133]当使用该示例实施例中所描述的数据结构时,通过以下等式2表达数据尺寸。
[0134]|XBW| + | 第一RMQ结构(前缀)| +
[0135]| Tc(Patricia树)| +1 第二RMQ结构(关键字)| +1 Rk(分数)
[0136](等式2)
[0137]在等式2中,|XBW|表示在xbw中表示特里树T的情况下的数据尺寸,并且IRk(分数)表示字符串分数数组的尺寸。
[0138]此外,根据特里树T产生Tc(Patricia树),并由DFUDS表示树结构。在该示例实施例中,为了仅区分开树结构的叶节点,通过仅使用比特字符串的每个比特,准备与节点数相同数量的比特串,以确定节点是否是叶节点。然后,仅通过移除字符串的树结构来表示该示例实施例中的Patricia树。这是因为如上所述字符串的信息是从xbw获得的。
[0139]尽管Patricia树的节点数至多为“21-1”,有必要准备其数量是DFUDS中节点数的两倍比特的数量、和与比特数的节点数相同的节点数的比特,以区分叶节点。因此,由61+0(1)比特表示 |Tc(Patricia树)|。
[0140]此外,针对关键字的字符串分数等级Rk(分数),产生第二RMQ结构(关键字)。由21+0(1)比特表示I第二RMQ结构(关键字)I。
[0141]假设|XBW|和|Rk(分数)|是用于实现字典和分数所必需的最小数据,在实现该示例实施例中所描述数据结构的情况下,开销至多是“2t+61+o(t)”,由此与一般方法相比减小了数据量。
[0142]以下描述了在使用该示例实施例中所描述的数据结构的情况下的计算量。通过0(k(log(k)+|P|+h))来计算计算量,其中|P|表示查询的长度,并且h表示在字典中登记的关键字的平均长度。因此,当使用该示例实施例中所描述的数据结构时可以独立于数据尺寸执行搜索处理。
[0143]以下描述了本发明的概述。图8是示出根据本发明的字符串搜索设备的概述的框图。根据本发明的字符串搜索设备是以下字符搜索设备:其从与字符串分数相关联的搜索候选字符串(例如,关键字)的集合中搜索包括输入字符串的搜索候选,每个字符串分数指示应当优先执行搜索的程度,字符串搜索设备包括:前缀集合识别单元81(例如,前缀集合识别单元20),其从前缀的集合(例如,XBW数据结构中的前缀的集合)中识别以输入字符串结尾的前缀的集合,前缀的集合中的每一个前缀是具有从每个搜索候选字符串的开始提取出的一个或更多个连续字符的字符串;前缀识别单元82(例如,前缀识别单元31),其从以输入字符串结尾的前缀的集合中识别具有最高前缀分数(例如,由等式1定义的前缀分数)的前缀,前缀分数是针对每个前缀通过与以前缀开始的搜索候选字符串相关联的字符串分数中的最高字符串分数定义的;以及字符串识别单元83(例如,字符串识别单元32),其从以所识别的前缀开始的搜索候选字符串中识别具有最高字符串分数的搜索候选字符串。
[OH4]因此,gij缀识别单兀82识别具有最尚gij缀分数的肖U缀,并且字符串识别单兀83从前缀中搜索具有最高字符串分数的搜索候选字符串,由此使得能够通过启动具有最高分数的搜索候选字符串。
[0145]此外,字符串搜索设备可以包括管理搜索范围的搜索管理单元(例如,搜索管理单元30)。搜索管理单元可以识别从以由字符串识别单元83识别的搜索候选字符串的前缀开始的搜索候选字符串中排除已经识别的搜索候选字符串的搜索候选字符串的范围,并识别从由前缀集合识别单元81识别的前缀的集合中排除由前缀识别单元82识别的前缀的前缀范围。此外,前缀识别单元82可以从由搜索管理单元识别的前缀的范围中识别具有最高前缀分数的前缀;以及字符串识别单元83可以从由搜索管理单元识别的搜索候选字符串的范围中识别具有最高字符串分数的搜索候选字符串。
[0146]以上,搜索管理单元可以包括队列(例如,优先级队列),队列用于保持由前缀识别单元82识别的前缀与前缀分数的配对和由字符串识别单元83识别的搜索目标字符串与字符串分数的配对。此外,搜索管理单元可以从来自队列中保持的对中的前
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1