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

文档序号:9713574阅读:275来源:国知局
文本字符串搜索设备、文本字符串搜索方法和文本字符串搜索程序的制作方法
【技术领域】
[0001]本发明涉及用于搜索作为子字符串的包含输入字符串的关键字的字符串搜索设备、字符串搜索方法和字符串搜索程序。
【背景技术】
[0002]支持人类文本输入的方法已经变得非常普及并对于我们的生活不可或缺。该输入支持包括例如用搜索引擎的输入形式显示搜索关键字作为搜索候选,并在web浏览器中用URL输入形式显示统一资源定位符(URL)作为候选。此外,输入也支持包括例如在输入方法编辑器(ME)的预测转换时显示转换候选,显示拼写检查器中的正确拼写的候选,等等。
[0003]这种输入支持被实现为在字典中的搜索。事先在字典中将用户可能输入的字符串登记为关键字。当用户重新开始字符串的输入时,用由用户输入的、作为搜索询问的字符串搜索字典,并获得合适的关键字作为输入候选并在屏幕上显示。例如,在搜索关键词的推荐中,事先在字典中登记用户过去输入过的搜索关键字,并用作输入的候选。
[0004]在实际情况下,不需列出与候选相对应的全部关键字。例如,在推荐搜索关键词的情况下,推荐输入频率中较高的前k个输入频率作为候选就足够了。用这种方式搜索具有高分数的前k个关键字的问题被称为“Top-k搜索(Top-k字典搜索)”。
[0005]非专利文献(NPL)l描述了用于通过使用特里树(trie)和被称为“RMQ特里树”的区间最小查询(RMQ)结构从前缀匹配关键字中高速获得位于前面的关键字的数据结构。
[0006]图9是示出了RMQ特里树的示意图。在图9所示的示例中,找到具有作为前缀的搜索查询P的节点V,以获得节点V下的关键字范围[a,b]。包括在范围[a,b]中的所有关键字各自具有作为前缀的搜索查询P。在这种情况下,针对来自被布置为与各关键字相关联的分数的数组R的范围[a,b]中的分数执行搜索,由此获得各自具有作为前缀的搜索查询P的具有最高分数的k个关键字。
[0007]NPL 1描述了另两种类型的数据结构,以用于从与RMQ特里树相类似的前缀匹配关键字中高速地获得位于前面的关键字。
[0008]此外,NPL2描述了文档搜索中的Top-k搜索。该方法实现了基于文档搜索的数据结构通过向数据结构添加对于Top-k搜索必需的附加数据的Top-k搜索。
[0009]引文列表[00?0]非专利文献
[0011]NPL 1:Bo_June(Paul)Hsu和Giuseppe Ottaviano,“Space-Efficient DataStructures for Top-k Complet1n/’WffW’13Proceedings of the 22nd internat1nalconference on World Wide Web,p583_594,May,2013
[0012]NPL 2:ffing-Kai Hon?Rahul Shah?Sharma V.Thankachan,“Towards an OptimalSpace-and-Query-Time Index for Top-k Document Retrieval,,,CPM’12Proceedings ofthe 23rd Annual conference on Combinatorial Pattern Matching?pi73-184

【发明内容】

[0013]技术问题
[0014]如果包括在字典中的关键字急剧增加,则与输入字符串相对应的关键字的数量也增加,由此需要搜索很长时间。因此,希望高速获得关键字作为候选。
[0015]另一方面,可以通过使用NPL1中所描述的数据结构来高速获得前缀匹配关键字的候选,但是难于获得子字符串匹配关键字的候选。
[0016]此外,可以通过使用NPL2中所描述的数据结构来实现文档搜索中的Top-k搜索。然而,由于用于文档搜索的数据尺寸大,该方法存在以下问题:如果用于文档搜索的搜索方法被直接用于字典,则目标数据的尺寸太大。
[0017]因此,本发明的目标在于:提供能够高速执行针对字符串的子字符串匹配搜索、同时减小数据量的字符串搜索设备、字符串搜索方法和字符串搜索程序。
[0018]问题的解决方案
[0019]根据本发明的一种字符串搜索设备是:一种字符串搜索设备,从与字符串分数相关联的搜索候选字符串的集合中搜索包括输入字符串的搜索候选,每个字符串分数指示应当优先执行搜索的程度,所述字符串搜索设备包括:前缀集合识别单元,从前缀的集合中识别以所述输入字符串结尾的前缀的集合,所述前缀的集合中的每一个前缀是具有从每个搜索候选字符串的开始提取出的一个或更多个连续字符的字符串;前缀识别单元,从以所述输入字符串结尾的前缀的集合中识别具有最高前缀分数的前缀,所述前缀分数是针对每个前缀通过与以所述前缀开始的搜索候选字符串相关联的字符串分数中的最高字符串分数定义的;以及字符串识别单兀,从以所识别的如缀开始的搜索候选字符串中识别具有最尚字符串分数的搜索候选字符串。
[0020]根据本发明的一种字符串搜索方法是:一种字符串搜索方法,从与字符串分数相关联的搜索候选字符串的集合中搜索包括输入字符串的搜索候选,每个字符串分数指示应当优先执行搜索的程度,所述字符串搜索方法包括:前缀集合识别步骤,从前缀的集合中识别以所述输入字符串结尾的前缀的集合,所述前缀的集合中的每一个前缀是具有从每个搜索候选字符串的开始提取出的一个或更多个连续字符的字符串;前缀识别步骤,从以所述输入字符串结尾的前缀的集合中识别具有最高前缀分数的前缀,所述前缀分数是针对每个前缀通过与以所述前缀开始的搜索候选字符串相关联的字符串分数中的最高字符串分数定义的;以及字符串识别步骤,从以所识别的如缀开始的搜索候选字符串中识别具有最尚字符串分数的搜索候选字符串。
[0021]根据本发明的一种字符串搜索设备是:一种应用于计算机的字符串搜索程序,从与字符串分数相关联的搜索候选字符串的集合中搜索包括输入字符串的搜索候选,每个字符串分数指示应当优先执行搜索的程度,所述字符串搜索程序使得所述计算机执行:前缀集合识别过程,从前缀的集合中识别以所述输入字符串结尾的前缀的集合,所述前缀的集合中的每一个前缀是具有从每个搜索候选字符串的开始提取出的一个或更多个连续字符的字符串;前缀识别过程,从以所述输入字符串结尾的前缀的集合中识别具有最高前缀分数的前缀,所述前缀分数是针对每个前缀通过与以所述前缀开始的搜索候选字符串相关联的字符串分数中的所述最高字符串分数定义的;以及字符串识别过程,从以所识别的前缀开始的搜索候选字符串中识别具有最高字符串分数的搜索候选字符串。
[0022]发明的有益效果
[0023]根据本发明,可以高速执行针对字符串的子字符串匹配搜索,同时减小数据量。
【附图说明】
[0024][图1]它是示出根据本发明的字符串搜索设备的第一示例实施例的配置示例的框图。
[0025][图2]它是示出与关键字相对应的特里树的示例的示意图。
[0026][图3]它是示出第一XBW的示例的示意图。
[0027][图4]它是示出第二XBW的示例的示意图。
[0028][图5]它是示出由搜索信息存储单元所存储的数据结构的示例的示意图。
[0029][图6]它是示出第一示例实施例的字符串搜索设备的操作示例的流程图。
[0030][图7]它是示出选择具有高字符串分数的关键字过程的示例的示意图。
[0031][图8]它是示出根据本发明的字符串搜索设备的概述的框图。
[0032][图9]它是示出RMQ特里树的示意图。
【具体实施方式】
[0033]首先,以下将描述本发明的字符串搜索设备的概述。已经提供了本发明以通过将作为字典的数据结构的XBW扩展至Top-k搜索,实现以节省空间的方式高速搜索包含输入字符串作为子字符串的位于前面的关键字的数据结构。
[0034]在本发明中,向作为搜索候选字符串的每个关键字和由特里树结构表示的关键字的集合指派指示应当优先执行搜索的程度的分数(以下,被称为“字符串分数”)。
[0035]此外,通过被用于字典搜索的XBW结构表示包括在关键字的集合中的关键字的所有前缀。本发明的字符串搜索设备通过使用XBW结构来识别以输入字符串结尾的前缀的范围。此外,每个前缀与以前缀开始的关键字的分数中的最高分数(以下,称为“前缀分数”)相关联。因此,字符串搜索设备从所识别的前缀的范围中识别具有最高前缀分数的前缀。
[0036]在本发明中,为了识别在所识别的前缀内的最高前缀分数,使用RMQ结构。以下,将RMQ结构称为“第一RMQ结构”,所述RMQ结构被用于表示前缀与前缀分数之间的关系,以识别最高前缀分数。字符串搜索设备通过使用第一RMQ结构来识别在识别的前缀的范围内具有最尚BU缀分数的如缀。
[0037]此外,字符串搜索设备从以识别的前缀开始的关键字中识别具有最高字符串分数的关键字。在这种情况下,识别的前缀与特里树中的一个节点相对应。因此,为了识别在每个节点下呈现的关键字的范围内的最高字符串分数(如在识别最高分数的情况下),使用RMQ结构。以下,被用于表示关键字与字符串分数之间的关系的RMQ结构被称为“第二 RMQ结构”。字符串搜索设备通过使用第二RMQ结构从以识别的前缀开始的关键字的范围中识别具有最高字符串分数的关键字。
[0038]在识别具有最高字符串分数的关键字之后,字符串搜索设备执行搜索具有第二高和后续的字符串分数的关键字的处理,以向Top-k搜索应用字符串搜索。在以已经识别的前缀开始的第二和后续关键字或以未识别的前缀开始的第一和后续关键字的位置处呈现具有第二高和后续字符串分数的关键字。
[0039]因此,字符串搜索设备先前保持所识别前缀的前缀分数和识别的关键字的字符串分数。字符串搜索设备从保留的字符串分数和前缀分数中选择具有最高分数的关键字或前缀。如果所选的是关键字,则字符串搜索设备搜索以与所选关键字相同的前缀开始的关键字中具有次高字符串分数的关键字。此外,如果所选的是前缀,则字符串搜索设备搜索相对于所选前缀具有次高前缀分数的前缀。通过重复该步骤,可以从包括输入字符串的关键字中有效地找到具有位于前面的字符串分数的关键字。
[0040]以下,将参照附图更详细地描述根据本发明的字符串搜索设备的优选示例实施例。
[0041 ] 示例实施例1
[0042]图1是示出根据本发明的字符串搜索设备的第一示例实施例的配置示例的框图。该示例实施例的字符串搜索设备包括输入单元10、前缀集合识别单元20、搜索管理单元30、前缀识别单元31、字符串识别单元32、输出单元40和搜索信息存储单元50。
[0043]输入单元10输入具有一个或更多个字符的字符串。该示例实施例的字符串搜索设备搜索包含作为子字符串的输入字符串的关键字。在以下描述中,输入字符串被称为“搜索查询(或简称“查询”)”P。
[0044]搜索信息存储单元50存储作为搜索候选字符串的关键字的集合。该示例实施例中所使用的关键字与上述字符串分数相关联。具体地,该示例实施例的字符串搜索设备优先地从关键字的集合中搜索具有较高字符串分数的关键字。
[0045]在该示例实施例中,通过使用特里树结构来表示要搜索的关键字,以减小数据量。图2是示出与关键字相对应的特里树的示例的示意图。例如,如果呈现了图2中所示的四个单词
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1