CN105474214A - 文本字符串搜索设备、文本字符串搜索方法和文本字符串搜索程序 - Google Patents
文本字符串搜索设备、文本字符串搜索方法和文本字符串搜索程序 Download PDFInfo
- Publication number
- CN105474214A CN105474214A CN201480046496.4A CN201480046496A CN105474214A CN 105474214 A CN105474214 A CN 105474214A CN 201480046496 A CN201480046496 A CN 201480046496A CN 105474214 A CN105474214 A CN 105474214A
- Authority
- CN
- China
- Prior art keywords
- prefix
- character string
- search
- mark
- highest
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Machine Translation (AREA)
Abstract
前缀集合识别单元(81)从前缀的集合中识别以输入字符串结尾的前缀的集合,前缀的集合中的每一个前缀是具有从每个搜索候选字符串的开始提取出的一个或更多个连续字符的字符串。前缀识别单元(82)从以输入字符串结尾的前缀的集合中识别具有最高前缀分数的前缀,前缀分数是针对每个前缀通过与以前缀开始的搜索候选字符串相关联的字符串分数中的最高字符串分数定义的。字符串识别单元(83)从以所识别的前缀开始的搜索候选字符串中识别具有最高字符串分数的搜索候选字符串。
Description
技术领域
本发明涉及用于搜索作为子字符串的包含输入字符串的关键字的字符串搜索设备、字符串搜索方法和字符串搜索程序。
背景技术
支持人类文本输入的方法已经变得非常普及并对于我们的生活不可或缺。该输入支持包括例如用搜索引擎的输入形式显示搜索关键字作为搜索候选,并在web浏览器中用URL输入形式显示统一资源定位符(URL)作为候选。此外,输入也支持包括例如在输入方法编辑器(IME)的预测转换时显示转换候选,显示拼写检查器中的正确拼写的候选,等等。
这种输入支持被实现为在字典中的搜索。事先在字典中将用户可能输入的字符串登记为关键字。当用户重新开始字符串的输入时,用由用户输入的、作为搜索询问的字符串搜索字典,并获得合适的关键字作为输入候选并在屏幕上显示。例如,在搜索关键词的推荐中,事先在字典中登记用户过去输入过的搜索关键字,并用作输入的候选。
在实际情况下,不需列出与候选相对应的全部关键字。例如,在推荐搜索关键词的情况下,推荐输入频率中较高的前k个输入频率作为候选就足够了。用这种方式搜索具有高分数的前k个关键字的问题被称为“Top-k搜索(Top-k字典搜索)”。
非专利文献(NPL)1描述了用于通过使用特里树(trie)和被称为“RMQ特里树”的区间最小查询(RMQ)结构从前缀匹配关键字中高速获得位于前面的关键字的数据结构。
图9是示出了RMQ特里树的示意图。在图9所示的示例中,找到具有作为前缀的搜索查询P的节点v,以获得节点v下的关键字范围[a,b]。包括在范围[a,b]中的所有关键字各自具有作为前缀的搜索查询P。在这种情况下,针对来自被布置为与各关键字相关联的分数的数组R的范围[a,b]中的分数执行搜索,由此获得各自具有作为前缀的搜索查询P的具有最高分数的k个关键字。
NPL1描述了另两种类型的数据结构,以用于从与RMQ特里树相类似的前缀匹配关键字中高速地获得位于前面的关键字。
此外,NPL2描述了文档搜索中的Top-k搜索。该方法实现了基于文档搜索的数据结构通过向数据结构添加对于Top-k搜索必需的附加数据的Top-k搜索。
引文列表
非专利文献
NPL1:Bo-June(Paul)Hsu和GiuseppeOttaviano,“Space-EfficientDataStructuresforTop-kCompletion,”WWW’13Proceedingsofthe22ndinternationalconferenceonWorldWideWeb,p583-594,May,2013
NPL2:Wing-KaiHon,RahulShah,SharmaV.Thankachan,“TowardsanOptimalSpace-and-Query-TimeIndexforTop-kDocumentRetrieval,”CPM’12Proceedingsofthe23rdAnnualconferenceonCombinatorialPatternMatching,p173-184
发明内容
技术问题
如果包括在字典中的关键字急剧增加,则与输入字符串相对应的关键字的数量也增加,由此需要搜索很长时间。因此,希望高速获得关键字作为候选。
另一方面,可以通过使用NPL1中所描述的数据结构来高速获得前缀匹配关键字的候选,但是难于获得子字符串匹配关键字的候选。
此外,可以通过使用NPL2中所描述的数据结构来实现文档搜索中的Top-k搜索。然而,由于用于文档搜索的数据尺寸大,该方法存在以下问题:如果用于文档搜索的搜索方法被直接用于字典,则目标数据的尺寸太大。
因此,本发明的目标在于:提供能够高速执行针对字符串的子字符串匹配搜索、同时减小数据量的字符串搜索设备、字符串搜索方法和字符串搜索程序。
问题的解决方案
根据本发明的一种字符串搜索设备是:一种字符串搜索设备,从与字符串分数相关联的搜索候选字符串的集合中搜索包括输入字符串的搜索候选,每个字符串分数指示应当优先执行搜索的程度,所述字符串搜索设备包括:前缀集合识别单元,从前缀的集合中识别以所述输入字符串结尾的前缀的集合,所述前缀的集合中的每一个前缀是具有从每个搜索候选字符串的开始提取出的一个或更多个连续字符的字符串;前缀识别单元,从以所述输入字符串结尾的前缀的集合中识别具有最高前缀分数的前缀,所述前缀分数是针对每个前缀通过与以所述前缀开始的搜索候选字符串相关联的字符串分数中的最高字符串分数定义的;以及字符串识别单元,从以所识别的前缀开始的搜索候选字符串中识别具有最高字符串分数的搜索候选字符串。
根据本发明的一种字符串搜索方法是:一种字符串搜索方法,从与字符串分数相关联的搜索候选字符串的集合中搜索包括输入字符串的搜索候选,每个字符串分数指示应当优先执行搜索的程度,所述字符串搜索方法包括:前缀集合识别步骤,从前缀的集合中识别以所述输入字符串结尾的前缀的集合,所述前缀的集合中的每一个前缀是具有从每个搜索候选字符串的开始提取出的一个或更多个连续字符的字符串;前缀识别步骤,从以所述输入字符串结尾的前缀的集合中识别具有最高前缀分数的前缀,所述前缀分数是针对每个前缀通过与以所述前缀开始的搜索候选字符串相关联的字符串分数中的最高字符串分数定义的;以及字符串识别步骤,从以所识别的前缀开始的搜索候选字符串中识别具有最高字符串分数的搜索候选字符串。
根据本发明的一种字符串搜索设备是:一种应用于计算机的字符串搜索程序,从与字符串分数相关联的搜索候选字符串的集合中搜索包括输入字符串的搜索候选,每个字符串分数指示应当优先执行搜索的程度,所述字符串搜索程序使得所述计算机执行:前缀集合识别过程,从前缀的集合中识别以所述输入字符串结尾的前缀的集合,所述前缀的集合中的每一个前缀是具有从每个搜索候选字符串的开始提取出的一个或更多个连续字符的字符串;前缀识别过程,从以所述输入字符串结尾的前缀的集合中识别具有最高前缀分数的前缀,所述前缀分数是针对每个前缀通过与以所述前缀开始的搜索候选字符串相关联的字符串分数中的所述最高字符串分数定义的;以及字符串识别过程,从以所识别的前缀开始的搜索候选字符串中识别具有最高字符串分数的搜索候选字符串。
发明的有益效果
根据本发明,可以高速执行针对字符串的子字符串匹配搜索,同时减小数据量。
附图说明
[图1]它是示出根据本发明的字符串搜索设备的第一示例实施例的配置示例的框图。
[图2]它是示出与关键字相对应的特里树的示例的示意图。
[图3]它是示出第一XBW的示例的示意图。
[图4]它是示出第二XBW的示例的示意图。
[图5]它是示出由搜索信息存储单元所存储的数据结构的示例的示意图。
[图6]它是示出第一示例实施例的字符串搜索设备的操作示例的流程图。
[图7]它是示出选择具有高字符串分数的关键字过程的示例的示意图。
[图8]它是示出根据本发明的字符串搜索设备的概述的框图。
[图9]它是示出RMQ特里树的示意图。
具体实施方式
首先,以下将描述本发明的字符串搜索设备的概述。已经提供了本发明以通过将作为字典的数据结构的XBW扩展至Top-k搜索,实现以节省空间的方式高速搜索包含输入字符串作为子字符串的位于前面的关键字的数据结构。
在本发明中,向作为搜索候选字符串的每个关键字和由特里树结构表示的关键字的集合指派指示应当优先执行搜索的程度的分数(以下,被称为“字符串分数”)。
此外,通过被用于字典搜索的XBW结构表示包括在关键字的集合中的关键字的所有前缀。本发明的字符串搜索设备通过使用XBW结构来识别以输入字符串结尾的前缀的范围。此外,每个前缀与以前缀开始的关键字的分数中的最高分数(以下,称为“前缀分数”)相关联。因此,字符串搜索设备从所识别的前缀的范围中识别具有最高前缀分数的前缀。
在本发明中,为了识别在所识别的前缀内的最高前缀分数,使用RMQ结构。以下,将RMQ结构称为“第一RMQ结构”,所述RMQ结构被用于表示前缀与前缀分数之间的关系,以识别最高前缀分数。字符串搜索设备通过使用第一RMQ结构来识别在识别的前缀的范围内具有最高前缀分数的前缀。
此外,字符串搜索设备从以识别的前缀开始的关键字中识别具有最高字符串分数的关键字。在这种情况下,识别的前缀与特里树中的一个节点相对应。因此,为了识别在每个节点下呈现的关键字的范围内的最高字符串分数(如在识别最高分数的情况下),使用RMQ结构。以下,被用于表示关键字与字符串分数之间的关系的RMQ结构被称为“第二RMQ结构”。字符串搜索设备通过使用第二RMQ结构从以识别的前缀开始的关键字的范围中识别具有最高字符串分数的关键字。
在识别具有最高字符串分数的关键字之后,字符串搜索设备执行搜索具有第二高和后续的字符串分数的关键字的处理,以向Top-k搜索应用字符串搜索。在以已经识别的前缀开始的第二和后续关键字或以未识别的前缀开始的第一和后续关键字的位置处呈现具有第二高和后续字符串分数的关键字。
因此,字符串搜索设备先前保持所识别前缀的前缀分数和识别的关键字的字符串分数。字符串搜索设备从保留的字符串分数和前缀分数中选择具有最高分数的关键字或前缀。如果所选的是关键字,则字符串搜索设备搜索以与所选关键字相同的前缀开始的关键字中具有次高字符串分数的关键字。此外,如果所选的是前缀,则字符串搜索设备搜索相对于所选前缀具有次高前缀分数的前缀。通过重复该步骤,可以从包括输入字符串的关键字中有效地找到具有位于前面的字符串分数的关键字。
以下,将参照附图更详细地描述根据本发明的字符串搜索设备的优选示例实施例。
示例实施例1
图1是示出根据本发明的字符串搜索设备的第一示例实施例的配置示例的框图。该示例实施例的字符串搜索设备包括输入单元10、前缀集合识别单元20、搜索管理单元30、前缀识别单元31、字符串识别单元32、输出单元40和搜索信息存储单元50。
输入单元10输入具有一个或更多个字符的字符串。该示例实施例的字符串搜索设备搜索包含作为子字符串的输入字符串的关键字。在以下描述中,输入字符串被称为“搜索查询(或简称“查询”)”P。
搜索信息存储单元50存储作为搜索候选字符串的关键字的集合。该示例实施例中所使用的关键字与上述字符串分数相关联。具体地,该示例实施例的字符串搜索设备优先地从关键字的集合中搜索具有较高字符串分数的关键字。
在该示例实施例中,通过使用特里树结构来表示要搜索的关键字,以减小数据量。图2是示出与关键字相对应的特里树的示例的示意图。例如,如果呈现了图2中所示的四个单词(aba、abcc、cab、cac),则构建特里树,使得在同一节点中布置由它们共享的同一字符。搜索信息存储单元50可以存储由特里树表示的关键字本身,或如稍后所描述的可以仅存储特里树的结构。
此外,树结构中所表示的每个叶节点与每个关键字相对应。因此,搜索信息存储单元50与每个叶节点相关联存储图2中所示每个关键字的分数(字符串分数)。由此,在通过搜索特里树到达叶节点时,能够获得与由叶节点表示的关键字相对应的字符串分数。
此外,搜索信息存储单元50存储前缀p的集合,以搜索以查询P结尾的字符串。前缀p是从每个关键字的开始部分提取出的一个或更多个连续字符的字符串。可以按照字典式顺序从结尾开始对前缀p的集合分类。
在该示例实施例中,结构XBW被用于表示这种上述前缀的集合。XBW是能够有效表示标记的树结构的数据结构。通过经由使用XBW结构来表达特里树,实现对以查询P结尾的前缀p的范围查询。
已知能够通过用于实现等同操作的两种类型的数据结构来实现XBW。在与前缀相对应的特里树上的节点中,关于字典中的每个前缀,第一XBW具有与表示子节点的字符相关联的结构。在特里树上与前缀相对应的节点中,关于字典中的每个前缀,第二XBW具有将前缀的ID关联为双亲节点的结构。以下,将描述每个XBW的内容。
图3是示出第一XBW的示例的示意图。在图3中所示的第一XBW中,以字典式顺序从结尾开始布置与特里树的各节点相对应的前缀,并且表示子节点的字符与每个前缀相关联。该结构实现从前缀向表示特定字符的子节点的移动,由此实现与特里树的操作等同的操作。此外,可以针对以查询P结尾的前缀p执行范围搜索。
图4是示出第二XBW的示例的示意图。在图4中所示的第二XBW中,以字典式顺序从结尾开始布置与特里树的各节点相对应的前缀,并且将ID指派给各前缀。然后,各前缀与其双亲ID相关联。该结构实现对于下一个双亲节点的移动。此外,与第一XBW类似,可以针对以查询P结尾的前缀p执行范围搜索。
顺便提及,在第二XBW中,很难搜索子节点,原因在于仅获得了双亲(parent)ID。然而,即使在使用第二XBW时,也可以执行针对以查询P结尾的前缀p的范围搜索。在该示例实施例中,适用任一XBW。
分别在参考文献1和参考文献2中描述了第一XBW和第二XBW。
<参考文献1>PaoloFerragina,FabrizioLuccio,GiovanniManzini和S.Muthukrishnan,“Structuringlabeledtreesforoptimalsuccinctness,andbeyond,”FOCS‘05Proceedingsofthe46thAnnualIEEESymposiumonFoundationsofComputerScience,页数184-196
<参考文献2>Wing-KaiHon,Tsung-HanKu,RahulShah,SharmaV.Thankachan,和JereyScottVitter,“Fastercompresseddictionarymatching”,SPIRE’10Proceedingsofthe17thinternationalconferenceonStringprocessingandinformationretrieval,页数191-200
此外,在该示例实施例中,针对每个前缀定义分数(具体地,前缀分数)。由与以前缀开始的关键字相关联的字符串分数中的最高字符串分数来定义前缀分数。可以由等式1表达该分数。等式1中右侧的字符“Score”表示字符串分数,并且等式1中左侧的字符“Score”表示前缀分数。
Score(p)=max{Score(pre(以前缀p开始的关键字)}(等式1)
在该示例实施例中,通过树结构表示关键字的集合,并且因此在与前缀相对应的节点下呈现了以特定前缀开始的关键字。因此,前缀分数是节点下呈现的多个关键字中的最高字符串分数。
在该示例实施例中,向XBW结构添加第一RMQ结构,以通过使用第一RMQ结构识别与每个节点相对应的前缀分数。具体地,在RMQ中所使用的数组中存储每个前缀的前缀分数。以下,其中存储前缀分数的数组被称为“前缀分数等级Rp”。由于基于结尾对前缀分类,以相同字符串结尾的前缀被识别为连续范围。因此,可以通过使用第一RMQ结构来识别前缀分数等级Rp的任意范围中的最高值。
此外,在该示例实施例中,允许通过使用第二RMQ结构来识别每个关键字的字符串分数。具体地,在RMQ中所使用的数组中存储每个关键字的字符串分数。以下,其中存储字符串分数的数组被称为“字符串分数等级Rk”。由于从开始对关键字分类,所以以特定前缀开始的关键字被识别为连续范围。因此,可以通过使用第二RMQ结构识别在字符串分数等级Rk的任意范围中的最高值。
图5是示出由搜索信息存储单元所存储的数据结构的示例的示意图。通过针对特里树中的每个节点具有三个元素的集合的集合S表示该示例实施例中的XBW结构。Slast(S最后)是二进制标志,如果该节点是节点的双亲节点的最后一个子节点,则将Slast设置为1,否则设置为0。Sα是由节点表示的字符。Sπ是与节点的双亲节点相对应的前缀,其是通过将字符依次从根连接至双亲节点所获得的字符串。顺便提及,Sπ不包括节点本身的字符。通过对包括在每个元素中的前缀的最后一个字符到第一个字符的比较,以字典式顺序对三个元素的每个集合分类。在图5中所示的示例中,从开始依次向分类的集合(Sπ,Sα,Slast)指派行号。图5中,$指示关键字的开始,#指示关键字的结束。
此外,如图5所示,针对每个前缀定义前缀分数Rp。由于根据与上述每个关键字相关联的字符串分数计算了前缀分数Rp,不需要显式地保留前缀分数。用从结尾对包括在字典中的所有前缀分类的顺序,来指派图5中所示的前缀ID。因此,前缀ID的顺序与具有被设置为1的Slast的前缀ID的顺序一致。
图5中所示的结构使能识别以查询P结尾的前缀的范围。例如,所理解的是,与以查询“ab”结尾的前缀相对应的行是与行号7至9相对应的行(具体地,与“$ab”和“$cab”相对应的行)。此外,所理解的是,“$ab”和“$cab”的前缀分数Rp分别是与前缀ID4和5相对应的9和4。
只要可以识别前缀的范围,就可以通过使用第一RMQ结构获得范围中具有最高分数的前缀的ID。此外,可以通过递归地使用第一RMQ结构获得具有第二高及随后的分数的前缀ID。
根据上述内容,通过使用XBW结构,能够从以查询P结尾的前缀p中选出具有较高前缀分数的任意数量的前缀p。
前缀集合识别单元20从搜索信息存储单元50中存储的前缀的集合中识别包括输入字符串的前缀的集合。具体地,前缀集合识别单元20识别以输入字符串结尾的前缀的集合。例如,如果搜索信息存储单元50存储图5中所示的前缀的集合,则作为字符串的“ab”的输入使得前缀集合识别单元20识别在行号7至9范围中呈现的前缀(即,“$ab”和“$cab”),作为前缀的集合。
前缀识别单元31从由前缀集合识别单元20识别的前缀的集合中识别具有较高前缀分数的前缀。前缀识别单元31可以识别具有最高前缀分数的前缀或与top-n前缀分数(n是任意自然数)相对应的前缀。
字符串识别单元32在以识别的前缀开始的关键字中识别具有较高字符串分数的关键字。字符串识别单元32可以搜索具有最高字符串分数的关键字或与top-m字符串分数(m是任意自然数)相对应的关键字。
例如,假设在图5中将前缀识别单元31识别的“$ab”作为前缀。在这种情况下,以识别的前缀“$ab”开始的关键字是“aba”和“abcc”。“aba”的字符串分数是3并且“abcc”的字符串分数是9。在这种情况下,字符串识别单元32可以选择“abcc”作为关键字。
搜索管理单元30识别由前缀识别单元31所搜索的前缀的范围。搜索管理单元30识别由字符串识别单元32所搜索的关键字的范围,并识别由字符串识别单元32识别的关键字作为搜索目标关键字。
具体地,首先,搜索管理单元30将由前缀集合识别单元20所识别的前缀的范围识别为要由前缀识别单元31搜索的前缀的范围。然后,搜索管理单元30识别在要由字符串识别单元32搜索的关键字的识别范围内以前缀开始的关键字。此外,搜索管理单元30识别由字符串识别单元32识别的关键字作为搜索目标关键字。
此后,搜索管理单元30识别以字符串识别单元32识别的关键字的前缀开始的关键字中已经识别的关键字以外的关键字的范围。此外,搜索管理单元30从前缀集合识别单元20识别的前缀的集合中识别由前缀识别单元31识别的前缀以外的前缀的范围。
然后,搜索管理单元30使得前缀识别单元31和字符串识别单元32执行各自的过程。具体地,前缀识别单元31从由搜索管理单元30识别的前缀的范围中识别具有最高前缀分数的前缀。此外,字符串识别单元32从由搜索管理单元30识别的关键字的范围中识别具有最高字符串分数的关键字。
搜索管理单元30对从前缀的范围中识别的前缀的前缀分数与从关键字的范围中识别的关键字的字符串分数进行比较。如果作为比较的结果,最高的分数是字符串分数,则在以与该关键字相同的关键字开始的关键字中,执行针对相对于相关关键字的次高关键字搜索。具体地,搜索管理单元30将关键字划分为两组,从在识别关键字时所使用的关键字的范围排除关注关键字,并识别两个范围。字符串识别单元32从两个范围中识别具有最高字符串分数的关键字。
如果最高的分数是前缀分数,则搜索相对于关注的前缀具有次高前缀分数的前缀。具体地,搜索管理单元30将前缀划分为两组,从在识别前缀时所使用的前缀的范围排除该前缀,并识别两个范围。前缀识别单元31从这些范围中识别具有最高前缀分数的前缀。
输出单元40输出由搜索管理单元30识别的关键字作为搜索结果。
通过根据程序(字符串搜索程序)操作的计算机的CPU实现前缀集合识别单元20、搜索管理单元30、前缀识别单元31和字符串识别单元32。例如,可以在字符串搜索设备的存储单元(未示出)中存储程序,并且CPU可以读出程序,以根据程序操作为前缀集合识别单元20、搜索管理单元30、前缀识别单元31和字符串识别单元32。
此外,可以由专用硬件实现前缀集合识别单元20、搜索管理单元30、前缀识别单元31和字符串识别单元32中的每一个。
以下描述了该示例实施例的字符串搜索设备的操作。图6是示出该示例实施例的字符串搜索设备的操作示例的流程图。这里,假设选择k个关键字作为候选。此外,假设搜索管理单元30包括优先级队列(未示出),优先级队列保持由前缀识别单元31识别的前缀与前缀分数的配对以及由字符串识别单元32所识别的关键字与字符串分数的配对。优先级队列是保持候选的信息的队列。在以下说明中,将优先级队列简称为“队列”。
输入单元10输入要搜索的字符串(步骤S11)。前缀集合识别单元20参照搜索信息存储单元50并识别包括输入字符串的前缀的集合(步骤S12)。
前缀识别单元31从由前缀集合识别单元20识别的前缀的集合中识别具有最高前缀分数的前缀,并在队列中保持识别的前缀与前缀分数的配对(步骤S13)。
字符串识别单元32从以识别的前缀开始的关键字中识别具有最高字符串分数的关键字,并在队列中保持识别的关键字与字符串分数的配对(步骤S14)。
后续地,搜索管理单元30在队列中保持的前缀分数或字符串分数中识别具有最高分数的前缀或关键字(步骤S15)。然后,搜索管理单元30确定最高分数是前缀分数还是字符串分数(步骤S16)。
如果最高分数是字符串分数(步骤S16中的“字符串分数”),则搜索管理单元30识别具有最高字符串分数的关键字作为输出目标,并从队列中移除该关键字(步骤S17)。然后,字符串识别单元32识别在用于识别移除的关键字的关键字的范围内相对于所移除的关键字的字符串分数具有次高字符串分数的关键字,并在队列中保持识别的关键字与字符串分数的配对(步骤S18)。
另一方面,如果最高分数是前缀分数(步骤S16中的“前缀分数”),则搜索管理单元30从队列中移除具有该前缀分数的前缀(步骤S19)。然后,前缀识别单元31识别在用于识别移除的前缀的前缀的范围内具有相对于所移除的前缀的前缀分数的次高前缀分数的前缀,并在队列中保持识别的前缀与前缀分数的配对(步骤S20)。
此外,字符串识别单元32从以步骤20中识别的前缀开始的关键字中识别具有最高字符串分数的关键字,并在队列中保持识别的关键字与字符串分数的配对(步骤S21)。
如果队列为空或队列中最高的分数低于此时已经找到的第k个最高的字符串分数(步骤S22中的是),则搜索管理单元30输出此时已经找到的关键字,作为位于前面的关键字(步骤S23)。另一方面,除非队列为空并且队列中最高的分数低于此时已经找到的第k个最高的字符串分数(步骤S22中的否),则重复步骤S15和后续步骤的过程。
因此,在同一优先级队列中保持由前缀识别单元31识别的前缀与前缀分数的配对和由字符串识别单元32识别的关键字与字符串分数的配对,由此使得能够从前缀分数或字符串分数提取出具有最高分数的配对。
以下通过使用特定示例描述了图6中所示的操作。图7是示出选择具有高字符串分数的关键字的过程的示例的示意图。在图7中所示的示例中,输入字符串“gres”,并示出了搜索包含作为子字符串的3个关键字(k=3)的方法。在图7的左侧的方框中示出的列表是示出XBW结构的列表,其中数字表示前缀分数并且字符表示前缀。此外,在图7的右侧的方框中示出的列表是示意性地示出特里树的列表,其中数字表示字符串分数并且字符表示关键字。
在“aggres”、“congres”和“progres”作为候选的情况下,前缀集合识别单元20从由XBW结构表示的前缀的集合中,识别包含作为子字符串的字符串“gres”的关键字的范围。只要识别了前缀,则可以识别以该前缀开始的关键字。
前缀识别单元31从所决定的前缀的集合中选择以输入字符串“gres”结尾的前缀中具有最高分数的前缀。图7中,示出了其中以前缀分数递减的顺序布置所选的前缀的状态。在图7所示的示例中,“congres”的前缀分数是最高的45。因此,前缀识别单元31识别“congres”作为前缀。
字符串识别单元32从以所选前缀开始的关键字中选出具有最高字符串分数的关键字。在图7中所示的示例中,存在具有前缀“congres”(即“congress”、“congressional”和“congressmen”)的三个关键字。它们中具有最高字符串分数的关键字是“congress”。因此,字符串识别单元32将“congress”识别为第一关键字并且搜索管理单元30将识别的“congress”识别为搜索目标关键字。
在该阶段,仅识别了一个关键字,并因此重复识别关键字的过程。
如上所述,搜索管理单元30事先具有用于保持候选(未示出)的信息的优先级队列,将此时已经找到的前缀和关键字连同它们的分数保持到队列中。
搜索管理单元30参照队列并选择队列中保持的前缀和关键字中具有最高分数的一个。如果所选的是关键字,则字符串识别单元32在与被用于搜索所选关键字的范围相同的关键词的范围内,搜索具有次高字符串分数的关键字。如果所选的是前缀,则前缀识别单元31在与被用于搜索所选前缀的范围相同的前缀的范围内,搜索具有相对于所选前缀的次高前缀分数的前缀。
在该示例的情况下,在队列中保持具有前缀分数45的前缀“congres”和具有字符串分数45的关键字“congress”。因为这时分数彼此相等,首先搜索关键字和前缀中的哪个是不重要的。如果搜索关键字,则搜索管理单元30首先弹出关键字“congress”,以从队列移除该关键字。然后,字符串识别单元32在以与被用于获得关键字“congress”的相同前缀“congres”开始的关键字中搜索具有相对于关键字“congress”的字符串分数次高字符串分数的关键字。具体地,搜索管理单元30这次在获得关键字“congress”时从已经搜索的关键字的范围中排除了关键字“congress”,并将范围划分为两部分。然后,字符串识别单元32在两个范围内搜索具有最高字符串分数的关键字。在这种情况下,在通过用排除的关键字“congress”平分所获得的两个范围内在以字典式顺序关键字“congress”之前的范围中没有出现关键字。因此,仅需要在以字典式顺序关键字“congress”之后的范围中找到具有最高字符串分数的关键字。关键字是具有字符串分数13的“congressmen”。因此,搜索管理单元30重新将该关键字保持到队列中。
如果搜索前缀,则搜索管理单元30首先弹出前缀“congress”,并将其从队列中移除。然后,前缀识别单元31搜索相对于前缀“congres”具有次高前缀分数的前缀。具体地,搜索管理单元30这次在获得前缀“congres”时从已经搜索的关键字的范围中排除了关键字“congres”,并将范围划分为两部分。然后,前缀识别单元31在两个范围内搜索具有最高前缀分数的前缀。在这种情况下,在用前缀“congres”平分所获得的两个范围内具有最高前缀分数的前缀是具有前缀分数12的前缀“aggres”和具有前缀分数21的前缀“progres”。因此,搜索管理单元30重新将两个前缀保持到队列中。
此外,字符串识别单元32获得以前缀“aggres”和“progres”的每一个开始的具有最高字符串分数的关键字。由此,字符串识别单元32获得具有字符串分数12的关键字“aggressive”和具有字符串分数21的关键字“progress”。因此,可以确认关于以上获得的两个前缀,前缀“aggres”的前缀分数是12,并且前缀“progres”的前缀分数是21。
在该示例实施例中,仅保持RMQ结构,而不保持前缀分数本身。尽管RMQ结构自身实现找到具有最高前缀分数的前缀,但是不实现计算特定前缀分数。因此,为了在获得范围内具有最高前缀分数的前缀之后具体确定该前缀分数是什么值,有必要获得以该前缀开始的关键字中的最高字符串分数。
根据以上处理,在队列中保持5个分数:具有前缀分数21的前缀“progres”;具有前缀分数12的前缀“aggres”;具有字符串分数21的关键字“progress”;具有字符串分数13的关键字“congressmen”;以及具有字符串分数12的关键字“aggressive”。
由于它们中的最高分数属于具有前缀分数21的前缀“progres”或具有字符串分数21的关键字“progress”,所以可以搜索前缀和关键字中的任意一个。
重复该过程。如果新近找到的前缀的前缀分数低于此时已经找到的第k个最高的字符串分数,则搜索管理单元30不在队列中登记该前缀。这是因为相对于该前缀具有次高前缀分数的前缀具有比该分数低的分数。类似地,如果新近找到的关键字的分数低于此时已经找到的第k个最高的字符串分数,则搜索管理单元30不在队列中登记该关键字。因此,可以省去针对具有低前缀分数和针对具有低字符串分数的搜索,由此能够有效地收集分数中前k个关键字。
如果队列为空或队列中最高的分数低于此时已经找到的第k高的字符串分数,则搜索结束。
如上所述,根据该示例实施例,前缀集合识别单元20从前缀的集合中识别以输入字符串结尾的前缀的集合,并且前缀识别单元31从以输入字符串结尾的前缀的集合中识别具有最高前缀分数的前缀。然后,字符串识别单元32从以识别的前缀开始的关键字中识别具有最高字符串分数的关键字。
具体地,在该示例实施例中,创建前缀和关键字的索引,并且因此与创建所有子字符串索引的情况相比,能够更多地减小字典尺寸。此外,在该示例实施例中,前缀识别单元31识别具有更高前缀分数的前缀,并且字符串识别单元32从前缀中搜索具有更高字符串分数的关键字,并且因此可以通过从最高分数的关键字搜索能够有效找到的前k个关键字。因此,本发明能够高速执行针对字符串的子字符串匹配搜索,同时减小数据量。
例如,日语字典、英语字典、查询登录名或URL通常包含公共前缀。该示例实施例的字符串搜索设备使用特里树作为能够将公共前缀收集到一起的数据结构,由此支持数据尺寸的减小。尽管该示例实施例已经例示出了通过使用特里树数据结构表示关键字的情况,该数据结构可以是Patricia树。通过使用Partricia树,可以与使用特里树的树结构时相比更多地减小数据尺寸。
此外,该示例实施例的字符串搜索设备包括用于管理搜索范围的搜索管理单元30。具体地,搜索管理单元30识别其中从以字符串识别单元32识别的关键字的前缀开始的关键字排除已经识别的关键字的范围,并识别其中从前缀集合识别单元20识别的前缀的集合排除由前缀识别单元31识别的前缀的范围。然后,前缀识别单元31从由搜索管理单元30识别的前缀的范围中识别具有最高前缀分数的前缀,并且字符串识别单元32从由搜索管理单元30识别的关键字的范围中识别具有最高字符串分数的关键字。这实现了将用作字典的数据结构的XBW扩展至Top-k搜索,由此使得能够在针对前k个候选执行子字符串匹配搜索时,高速以节省空间的方式执行处理。
示例实施例2
以下描述了根据本发明的字符串搜索设备的第二示例实施例。该示例实施例的字符串搜索设备的配置与第一示例实施例的配置相同。然而,第二示例实施例的字符串搜索设备旨在实现与第一示例实施例的字符串搜索设备相比更大程度的保持数据量的减小。
根据第一示例实施例中所描述的特里树T,产生了两个数据结构。一个是前缀的数据结构并且另一个是关键字的数据结构。
前缀的数据结构包括xbw和与其附接的第一RMQ,该xbw是特里树T的XBW表示。如第一示例实施例中所描述的,用其中从xbw数据结构上的末端对前缀分类的顺序布置前缀。
此外,针对第一示例实施例中示出的前缀分数等级Rp产生了第一RMQ结构。在该情况下,搜索信息存储单元50不需要显式地保持前缀分数等级Rp,而是仅可以保持根据前缀分数等级Rn计算出的第一RMQ结构。
关键字的数据结构包括根据特里树T、第二RMQ结构和字符串分数等级Tc产生的Patricia树Tc。使用DFUDS表示来表示Patricia树Tc的树结构。此外,在Patricia树Tc中,准备与节点的数量相同数量的比特串,以仅区分树结构的叶节点。
一般的Patricia树保持与各节点相对应的字符串。然而,该示例实施例的搜索信息存储单元50移除与各节点相对应的字符串,并仅存储表示节点之间的亲子关系的树结构。稍后将描述仅存储树结构的原因。
在以下说明中,如图5所示出的,假设以字典式顺序根据第一字符对各关键字分类,并用该顺序将关键字ID指派给关键字。此外,假设以字典式顺序从结尾对前缀分类,并用该顺序向前缀指派前缀ID。此外,由[sp,ep]表示前缀ID的范围,并由[ss,es]表示表示前缀的集合S上的范围。
前缀集合识别单元20识别以输入字符串结尾的前缀ID的范围[sp,ep]。具体地,前缀集合识别单元20通过使用xbw识别范围[ss,es],在范围[ss,es]中前缀的末尾是输入字符串。然而,该范围[ss,es]是集合S上的范围,并且因此有必要将该范围转换为前缀ID的范围[sp,ep]。因此,前缀集合识别单元20通过识别哪个数字1是包括在Slast上的[ss,es]中的第一个1还是最后一个1来识别[sp,ep]。这是因为在Slast上设置为1的元素以相同顺序一一对应于前缀ID。
前缀识别单元31从识别的前缀ID的范围[sp,ep]中识别具有最高前缀分数的前缀。具体地,前缀识别单元31通过使用第一RMQ结构来识别[sp,ep]范围内具有最高前缀分数的前缀的位置。此外,由ip表示这里识别的前缀的位置。
搜索管理单元30从识别的前缀的位置ip识别以前缀开始的关键字的范围。下文,由[sk,ek]标记以识别的前缀开始的关键字的范围。具体地,搜索管理单元30首先识别具有与前缀的位置ip相对应的前缀的最后一个节点,作为S上的相应位置is。
后续地,搜索管理单元30还原在xbw中表示该前缀的字符串。具体地,搜索管理单元30通过连接通过从由xbw中由第is行所表示节点追踪朝向双亲的树所获得的字符,来还原字符串。用于从节点移向双亲的次数与前缀的长度相等。
这时,关于所追踪的S上的每个位置is,搜索管理单元30计算根据满足Slast[if]=1的位置if的差异d=is-if,其中位置if位于is的该侧上并离其最近。然后,搜索管理单元30用与追踪朝向双亲的树的顺序相反的顺序,将所计算的值存储到数组d中。然而,除非存在以上if,否则搜索管理单元30将用if=0计算出的值存储到数组d中。
后续地,搜索管理单元30根据在Patricia树Tc中数组d中所存储的值的顺序,将目标位置从双亲节点移动至子节点。然而,如果数组d中相应值是1,则搜索管理单元30忽略该值并执行针对下一个值的处理。
因为根据同一特里树T产生了xbw和Tc,所以除了该节点仅具有一个子女时,每个节点的子女的数量与顺序一致。因此,根据数组d移动Tc上的目标位置,由此该位置到达与前缀相对应的Tc上的节点uc。
搜索管理单元30通过使用DFUDS来识别与所到达的节点uc的后代相对应的关键字的范围[sk,ek]。包括在范围[sk,ek]中的所有关键字是节点uc的子女,并且因此可以说[sk,ek]指示以识别的前缀开始的关键字的范围。
字符串识别单元32从识别的关键字范围[sk,ek]中识别具有最高字符串分数的关键字ID(以下,由ik表示关键字ID)。具体地,字符串识别单元32通过使用第二RMQ结构来识别范围[sk,ek]内具有最高前缀分数的关键字的位置ik。
字符串识别单元32根据识别的关键字ID的位置ik来识别关键字的字符串。位置ik与Patricia树Tc上的第ik个叶节点ui相对应。因此,字符串识别单元32从ui追踪朝向的双亲节点Patricia树Tc,并用与追踪朝向双亲的树的顺序相反的顺序将子节点数存储到数组d中。字符串识别单元32能够通过根据数组d依次从根追踪xbw,能够识别与ui相对应的xbw上的节点的位置。顺便提及,如果子节点是一个,可以在不参照数组d的情况下无条件地将该位置移向叶节点。因此,与Patricia树Tc的叶节点相对应的特里树的节点的子女没有分枝。因此,字符串识别单元32能够通过追踪单链精确地还原关键字。
如上所述,从xbw获得关键字信息。因此,仅需要通过移除Patricia树中各节点的字符串,仅留下节点之间的亲子关系。
例如,图5中,可以通过从根选择第一子女并且然后选择所选节点处的第一子女到达“$ab”。因此,搜索管理单元30可以在数组d中存储信息“d=1,1”,以便识别所选节点。
以下,将通过使用图5中所示的示例来描述该示例实施例的字符串搜索设备的特定操作。在该说明书中,假设搜索查询P=“ab”且k=2。以P结尾的S上的范围是[ss,es]=[7,9]。与其相对应的Rp上的范围是[sp,ep]=[4,5]。该范围中最高前缀分数的位置是ip=4。这与S上的位置ip=8相对应。与以上is对应的前缀是“$ab”。由于二者均是第一子女,所以获得了数组d=1,1。
通过在Tc上的根节点处开始,移动至第一子节点,并再次移动至第一子节点,到达与“$ab”相对应的节点。节点下的最高字符串分数是9,并且通过关键字ID=1区分关键字。因此,获得关键字ID和字符串分数的配对<1,9>。它是图5中的具有字典中最高字符串分数的关键字。
次最高排序的关键字是同一前缀的第二关键字或任意其他前缀的第一关键字。同一前缀的第二关键字是通过关键字ID=0区分的关键字,并且其字符串分数是3(以下,被称为<0,3>)。同时,为了找到任意其他前缀的第一关键字,需要识别排除了以上被识别为最高前缀ip=4的前缀的范围。前缀的范围被划分为两组,排除前缀ip=4,通过其识别范围[sp,ep]=[5,5]。然后,在范围[sp,ep]=[5,5]中识别具有最高前缀分数的前缀,以执行识别相应关键字中具有最高字符串分数的关键字的过程。在图5中所示的示例中,该过程与识别及前缀“$cab”开始的关键字中具有最高字符串查询分数的关键字相对应。结果,重新识别关键字ID和字符串分数的配对<2,4>。
尽管至此识别了三个候选配对,但是排除了具有低分的配对<0,3>。最后剩余的配对是<1,9>和<2,4>。在识别这两个配对之后,执行从各个配对还原关键字的处理。Tc中的路径d分别是(1,2)和(2,1)。通过从根追踪xbw唯一找到与关键字相对应的源字典中的关键字,由此获得关键字“$abcc#”和“$cab#”。
以下描述了在使用该示例实施例中所描述的数据结构的情况下的数据尺寸。假设提供了特里树T和分数等级Rk,则满足“节点t的数量>关键字的数量1”。大体上来说,节点t的数量大致是关键字1数量的10倍。
当使用该示例实施例中所描述的数据结构时,通过以下等式2表达数据尺寸。
|XBW|+|第一RMQ结构(前缀)|+
|Tc(Patricia树)|+|第二RMQ结构(关键字)|+|Rk(分数)|
(等式2)
在等式2中,|XBW|表示在xbw中表示特里树T的情况下的数据尺寸,并且|Rk(分数)|表示字符串分数数组的尺寸。
此外,根据特里树T产生Tc(Patricia树),并由DFUDS表示树结构。在该示例实施例中,为了仅区分开树结构的叶节点,通过仅使用比特字符串的每个比特,准备与节点数相同数量的比特串,以确定节点是否是叶节点。然后,仅通过移除字符串的树结构来表示该示例实施例中的Patricia树。这是因为如上所述字符串的信息是从xbw获得的。
尽管Patricia树的节点数至多为“21-1”,有必要准备其数量是DFUDS中节点数的两倍比特的数量、和与比特数的节点数相同的节点数的比特,以区分叶节点。因此,由61+o(1)比特表示|Tc(Patricia树)|。
此外,针对关键字的字符串分数等级Rk(分数),产生第二RMQ结构(关键字)。由21+o(1)比特表示|第二RMQ结构(关键字)|。
假设|XBW|和|Rk(分数)|是用于实现字典和分数所必需的最小数据,在实现该示例实施例中所描述数据结构的情况下,开销至多是“2t+61+o(t)”,由此与一般方法相比减小了数据量。
以下描述了在使用该示例实施例中所描述的数据结构的情况下的计算量。通过O(k(log(k)+|P|+h))来计算计算量,其中|P|表示查询的长度,并且h表示在字典中登记的关键字的平均长度。因此,当使用该示例实施例中所描述的数据结构时可以独立于数据尺寸执行搜索处理。
以下描述了本发明的概述。图8是示出根据本发明的字符串搜索设备的概述的框图。根据本发明的字符串搜索设备是以下字符搜索设备:其从与字符串分数相关联的搜索候选字符串(例如,关键字)的集合中搜索包括输入字符串的搜索候选,每个字符串分数指示应当优先执行搜索的程度,字符串搜索设备包括:前缀集合识别单元81(例如,前缀集合识别单元20),其从前缀的集合(例如,XBW数据结构中的前缀的集合)中识别以输入字符串结尾的前缀的集合,前缀的集合中的每一个前缀是具有从每个搜索候选字符串的开始提取出的一个或更多个连续字符的字符串;前缀识别单元82(例如,前缀识别单元31),其从以输入字符串结尾的前缀的集合中识别具有最高前缀分数(例如,由等式1定义的前缀分数)的前缀,前缀分数是针对每个前缀通过与以前缀开始的搜索候选字符串相关联的字符串分数中的最高字符串分数定义的;以及字符串识别单元83(例如,字符串识别单元32),其从以所识别的前缀开始的搜索候选字符串中识别具有最高字符串分数的搜索候选字符串。
因此,前缀识别单元82识别具有最高前缀分数的前缀,并且字符串识别单元83从前缀中搜索具有最高字符串分数的搜索候选字符串,由此使得能够通过启动具有最高分数的搜索候选字符串。
此外,字符串搜索设备可以包括管理搜索范围的搜索管理单元(例如,搜索管理单元30)。搜索管理单元可以识别从以由字符串识别单元83识别的搜索候选字符串的前缀开始的搜索候选字符串中排除已经识别的搜索候选字符串的搜索候选字符串的范围,并识别从由前缀集合识别单元81识别的前缀的集合中排除由前缀识别单元82识别的前缀的前缀范围。此外,前缀识别单元82可以从由搜索管理单元识别的前缀的范围中识别具有最高前缀分数的前缀;以及字符串识别单元83可以从由搜索管理单元识别的搜索候选字符串的范围中识别具有最高字符串分数的搜索候选字符串。
以上,搜索管理单元可以包括队列(例如,优先级队列),队列用于保持由前缀识别单元82识别的前缀与前缀分数的配对和由字符串识别单元83识别的搜索目标字符串与字符串分数的配对。此外,搜索管理单元可以从来自队列中保持的对中的前缀分数或字符串分数中识别具有最高分数的前缀或搜索目标字符串,在最高分数是字符串分数的情况下,可以从队列移除具有字符串分数的搜索目标字符串,以及,在最高分数是前缀分数的情况下,可以从队列移除具有前缀分数的前缀。此外,前缀识别单元82,可以识别相对于从队列移除的前缀的前缀分数具有次高的前缀分数的前缀;以及字符串识别单元83,在最高分数是字符串分数的情况下,在以与被用于从队列移除的搜索目标字符串的前缀相同的前缀开始的搜索目标字符串中,可以识别相对于移除的搜索目标字符串的字符串分数的次高字符串分数,以及在最高分数是前缀分数的情况下,从以由前缀识别单元识别的前缀开始的搜索目标字符串中,可以识别具有最高字符串分数的搜索目标字符串。
用这种方式,一个队列保持两个配对:前缀与前缀分数的配对;以及搜索目标字符串与字符串分数的配对,由此基于队列中保持的前缀分数或字符串分数,能够确定最高分数是前缀分数还是字符串分数。前缀识别单元82和字符串识别单元83基于最高分数重复上述过程,由此实现了对具有较高字符串分数的搜索目标字符串的有效识别。
此外,字符串搜索设备还可以包括搜索信息存储单元(例如,搜索信息存储单元50),该搜索信息存储单元存储前缀的集合和Patricia树,该前缀的集合是根据由特里树数据结构表示的搜索候选字符串的集合所产生的并具有XBW数据结构(例如,xbw),Patricia树根据特里树数据结构产生并仅具有表示节点之间的亲-子关系的树结构而不包括与Patricia树的节点相对应的字符串。此外,前缀识别单元82可以从具有XBW数据结构的前缀的集合中识别具有最高前缀分数的前缀的位置;以及搜索管理单元从所识别的前缀的位置中识别Patricia树的相应节点的位置(例如,uc)。该配置实现了搜索中使用的存储数据量的减小。
以上,字符串识别单元83可以从在由搜索管理单元识别的节点位置下呈现的搜索候选字符串中识别具有最高字符串分数的搜索候选字符串的位置(例如,ui),并从具有XBW数据结构的前缀中识别与所识别的位置相对应的搜索候选字符串。
此外,前缀识别单元82基于由第一RMQ结构表示的前缀与前缀分数之间的关系,通过使用第一RMQ结构执行针对识别的前缀的集合的范围搜索,可以识别具有最高前缀分数的前缀。
此外,字符串识别单元83基于由第二RMQ结构表示的搜索候选字符串与字符串分数之间的关系,通过使用第二RMQ结构执行针对以所识别的前缀开始的搜索候选字符串的范围搜索,可以识别具有最高前缀分数的前缀。
尽管已经参照以上示例实施例和示例描述了本发明,但是本发明不限于此。本领域技术人员可以理解的是,可以在本发明的范围内对本发明的配置和细节中做出各种改变。
该申请要求在2013年8月21日递交的日本专利申请No.2013-171291的优先权,并通过引用将其整个公开并入本文。
工业实用性
本发明优选地适用于搜索包含作为子字符串的输入字符串的关键字的字符串搜索设备。根据本发明的字符串搜索设备可用于例如提供搜索服务。
参考标记列表
10输入单元
20前缀集合识别单元
30搜索管理单元
31前缀识别单元
32字符串识别单元
40输出单元
50搜索信息存储单元
Claims (11)
1.一种字符串搜索设备,所述字符串搜索设备从与字符串分数相关联的搜索候选字符串的集合中搜索包括输入字符串的搜索候选字符串,每个字符串分数指示应当优先执行搜索的程度,所述字符串搜索设备包括:
前缀集合识别单元,所述前缀集合识别单元从下述前缀集合中识别以所述输入字符串结尾的前缀的集合,所述前缀集合中的每一个前缀是具有从每个搜索候选字符串的开始提取出的一个或更多个连续字符的字符串;
前缀识别单元,所述前缀识别单元从以所述输入字符串结尾的前缀的集合中识别具有最高前缀分数的前缀,所述前缀分数是针对每个前缀通过与以所述前缀开始的搜索候选字符串相关联的字符串分数中的最高字符串分数定义的;以及
字符串识别单元,所述字符串识别单元从以所识别的前缀开始的搜索候选字符串中识别具有最高字符串分数的搜索候选字符串。
2.根据权利要求1所述的字符串搜索设备,还包括管理搜索范围的搜索管理单元,其中:
所述搜索管理单元识别从以所述字符串识别单元识别的搜索候选字符串的前缀开始的搜索候选字符串中排除已经识别的搜索候选字符串的搜索候选字符串的范围,并识别从所述前缀集合识别单元识别的前缀的集合中排除由所述前缀识别单元识别的前缀的前缀的范围;
所述前缀识别单元从所述搜索管理单元识别的前缀的范围中识别具有最高前缀分数的前缀;以及
所述字符串识别单元从所述搜索管理单元识别的搜索候选字符串的范围中识别具有最高字符串分数的搜索候选字符串。
3.根据权利要求2所述的字符串搜索设备,其中:
所述搜索管理单元包括队列,所述队列用于保持由所述前缀识别单元识别的前缀与前缀分数的配对以及由所述字符串识别单元识别的搜索目标字符串与字符串分数的配对;
所述搜索管理单元从所述队列中保持的配对中识别具有前缀分数或字符串分数中的最高分数的前缀或搜索目标字符串,在所述最高分数是字符串分数的情况下,从所述队列移除具有所述字符串分数的搜索目标字符串并将所述搜索目标字符串识别为输出目标,以及在所述最高分数是前缀分数的情况下,从所述队列移除具有所述前缀分数的前缀;
在所述最高分数是前缀分数的情况下,所述前缀识别单元识别相对于从所述队列移除的前缀的前缀分数具有次高的前缀分数的前缀;以及
在所述最高分数是字符串分数的情况下,所述字符串识别单元从以与用于识别从所述队列移除的搜索目标字符串的前缀相同的前缀开始的搜索目标字符串中,识别相对于移除的搜索目标字符串的字符串分数的次高字符串分数;以及在所述最高分数是前缀分数的情况下,所述字符串识别单元从以所述前缀识别单元识别的前缀开始的搜索目标字符串中识别具有最高字符串分数的搜索目标字符串。
4.根据权利要求1至3中任一项所述的字符串搜索设备,还包括搜索信息存储单元,所述搜索信息存储单元存储前缀的集合和Patricia树,所述前缀的集合是根据由特里树数据结构表示的搜索候选字符串的集合产生的并具有XBW数据结构,所述Patricia树是根据所述特里树数据结构产生的并仅具有表示节点之间的亲-子关系的树结构而不包括与Patricia树的节点相对应的字符串,其中:
所述前缀识别单元从具有XBW数据结构的前缀的集合中识别具有最高前缀分数的前缀的位置;以及
所述搜索管理单元根据所识别的前缀的位置来识别Patricia树中的相应节点的位置。
5.根据权利要求4所述的字符串搜索设备,其中所述字符串识别单元从所述搜索管理单元识别的节点的位置之下呈现的搜索候选字符串中识别具有最高字符串分数的搜索候选字符串的位置,并从具有XBW数据结构的前缀中识别与所识别的位置相对应的搜索候选字符串。
6.根据权利要求1-5中任一项所述的字符串搜索设备,其中所述前缀识别单元基于由第一RMQ结构表示的前缀与前缀分数之间的关系,通过使用第一RMQ结构对所识别的前缀的集合执行范围搜索,来识别具有最高前缀分数的前缀。
7.根据权利要求1-6中任一项所述的字符串搜索设备,其中所述字符串识别单元基于由第二RMQ结构表示的搜索候选字符串与字符串分数之间的关系,通过使用第二RMQ结构对以所识别的前缀开始的搜索候选字符串执行范围搜索,来识别具有最高字符串分数的搜索候选字符串。
8.一种字符串搜索方法,从与字符串分数相关联的搜索候选字符串的集合中搜索包括输入字符串的搜索候选字符串,每个字符串分数指示应当优先执行搜索的程度,所述字符串搜索方法包括:
前缀集合识别步骤,从下述前缀集合中识别以所述输入字符串结尾的前缀的集合,所述前缀集合中的每一个前缀是具有从每个搜索候选字符串的开始提取出的一个或更多个连续字符的字符串;
前缀识别步骤,从以所述输入字符串结尾的前缀的集合中识别具有最高前缀分数的前缀,所述前缀分数是针对每个前缀通过与以所述前缀开始的搜索候选字符串相关联的字符串分数中的最高字符串分数定义的;以及
字符串识别步骤,从以所识别的前缀开始的搜索候选字符串中识别具有最高字符串分数的搜索候选字符串。
9.根据权利要求8所述的字符串搜索方法,还包括管理搜索范围的搜索管理步骤,其中:
所述搜索管理步骤包括识别从以所述字符串识别步骤中识别的搜索候选字符串的前缀开始的搜索候选字符串中排除已经识别的搜索候选字符串的搜索候选字符串的范围,并识别从所述前缀集合识别步骤中识别的前缀的集合中排除所述前缀识别步骤中识别的前缀的前缀的范围;
所述前缀识别步骤包括从在所述搜索管理步骤中识别的前缀的范围中识别具有最高前缀分数的前缀;以及
所述字符串识别步骤包括从在所述搜索管理步骤中识别的搜索候选字符串的范围中识别具有最高字符串分数的搜索候选字符串。
10.一种应用于计算机的字符串搜索程序,所述字符串搜索程序从与字符串分数相关联的搜索候选字符串的集合中搜索包括输入字符串的搜索候选字符串,每个字符串分数指示应当优先执行搜索的程度,所述字符串搜索程序使得所述计算机执行:
前缀集合识别过程,从下述前缀集合中识别以所述输入字符串结尾的前缀的集合,所述前缀集合中的每一个前缀是具有从每个搜索候选字符串的开始提取出的一个或更多个连续字符的字符串;
前缀识别过程,从以所述输入字符串结尾的前缀的集合中识别具有最高前缀分数的前缀,所述前缀分数是针对每个前缀通过与以所述前缀开始的搜索候选字符串相关联的字符串分数中的最高字符串分数定义的;以及
字符串识别过程,从以所识别的前缀开始的搜索候选字符串中识别具有最高字符串分数的搜索候选字符串。
11.根据权利要求10所述的字符串搜索程序,还包括使得所述计算机执行管理搜索范围的搜索管理过程,其中:
在所述搜索管理过程中,使得所述计算机识别从以所述字符串识别过程中识别的搜索候选字符串的前缀开始的搜索候选字符串中排除已经识别的搜索候选字符串的搜索候选字符串的范围,并识别从所述前缀集合识别过程中识别的前缀的集合中排除所述前缀识别过程中识别的前缀的前缀的范围;
在所述前缀识别过程中,使得所述计算机从所述搜索管理过程中识别的前缀的范围中识别具有最高前缀分数的前缀;以及
在所述字符串识别过程中,使得所述计算机从所述搜索管理过程中识别的搜索候选字符串的范围中识别具有最高字符串分数的搜索候选字符串。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013171291 | 2013-08-21 | ||
JP2013-171291 | 2013-08-21 | ||
PCT/JP2014/003817 WO2015025467A1 (ja) | 2013-08-21 | 2014-07-18 | 文字列検索装置、文字列検索方法および文字列検索プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105474214A true CN105474214A (zh) | 2016-04-06 |
Family
ID=52483264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480046496.4A Pending CN105474214A (zh) | 2013-08-21 | 2014-07-18 | 文本字符串搜索设备、文本字符串搜索方法和文本字符串搜索程序 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20160196303A1 (zh) |
EP (1) | EP3037986A4 (zh) |
JP (1) | JP6072922B2 (zh) |
CN (1) | CN105474214A (zh) |
WO (1) | WO2015025467A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114065733A (zh) * | 2021-10-18 | 2022-02-18 | 浙江香侬慧语科技有限责任公司 | 基于机器阅读理解的依存句法分析方法、装置及介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9892789B1 (en) | 2017-01-16 | 2018-02-13 | International Business Machines Corporation | Content addressable memory with match hit quality indication |
EP3376407B1 (en) | 2017-03-15 | 2020-09-16 | censhare AG | Efficient use of trie data structure in databases |
CN110222238B (zh) * | 2019-04-30 | 2022-02-25 | 上海交通大学 | 字符串与识别符双向映射的查询方法和系统 |
US11860884B2 (en) * | 2021-03-30 | 2024-01-02 | Snap Inc. | Search query modification database |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050055200A1 (en) * | 2003-09-09 | 2005-03-10 | International Business Machines Corporation | System and method for determining affixes of words |
US20070255748A1 (en) * | 2006-04-06 | 2007-11-01 | University Di Pisa | Method of structuring and compressing labeled trees of arbitrary degree and shape |
US20090327284A1 (en) * | 2007-01-24 | 2009-12-31 | Fujitsu Limited | Information search apparatus, and information search method, and computer product |
US20100010989A1 (en) * | 2008-07-03 | 2010-01-14 | The Regents Of The University Of California | Method for Efficiently Supporting Interactive, Fuzzy Search on Structured Data |
CN101916263A (zh) * | 2010-07-27 | 2010-12-15 | 武汉大学 | 基于加权编辑距离的模糊关键字查询方法及系统 |
US20120173500A1 (en) * | 2010-12-29 | 2012-07-05 | Microsoft Corporation | Progressive spatial searching using augmented structures |
CN102770863A (zh) * | 2010-02-24 | 2012-11-07 | 三菱电机株式会社 | 检索装置以及检索程序 |
-
2014
- 2014-07-18 WO PCT/JP2014/003817 patent/WO2015025467A1/ja active Application Filing
- 2014-07-18 JP JP2015532688A patent/JP6072922B2/ja active Active
- 2014-07-18 CN CN201480046496.4A patent/CN105474214A/zh active Pending
- 2014-07-18 EP EP14838200.5A patent/EP3037986A4/en not_active Ceased
- 2014-07-18 US US14/909,793 patent/US20160196303A1/en not_active Abandoned
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050055200A1 (en) * | 2003-09-09 | 2005-03-10 | International Business Machines Corporation | System and method for determining affixes of words |
US20070255748A1 (en) * | 2006-04-06 | 2007-11-01 | University Di Pisa | Method of structuring and compressing labeled trees of arbitrary degree and shape |
US20090327284A1 (en) * | 2007-01-24 | 2009-12-31 | Fujitsu Limited | Information search apparatus, and information search method, and computer product |
US20100010989A1 (en) * | 2008-07-03 | 2010-01-14 | The Regents Of The University Of California | Method for Efficiently Supporting Interactive, Fuzzy Search on Structured Data |
CN102084363A (zh) * | 2008-07-03 | 2011-06-01 | 加利福尼亚大学董事会 | 一种用于在结构化数据上高效地支持交互式模糊搜索的方法 |
CN102770863A (zh) * | 2010-02-24 | 2012-11-07 | 三菱电机株式会社 | 检索装置以及检索程序 |
CN101916263A (zh) * | 2010-07-27 | 2010-12-15 | 武汉大学 | 基于加权编辑距离的模糊关键字查询方法及系统 |
US20120173500A1 (en) * | 2010-12-29 | 2012-07-05 | Microsoft Corporation | Progressive spatial searching using augmented structures |
Non-Patent Citations (5)
Title |
---|
BO-JUNE (PAUL) HSU 等: "Space-Efficient Data Structures for Top-k Completion", 《ACM》 * |
BO-JUNE (PAUL) HSU 等: "Space-Efficient Data Structures for Top-k Completion", 《THE INTERNATIONAL WORLD WIDE WEB CONFERENCE》 * |
DONALD ADJEROH 等: "The Burrows-Wheeler Transform:Data Compression, Suffix Arrays, and Pattern Matching", 《ACM SIGACT NEWS》 * |
PAOLO FERRAGINA 等: "Structuring labeled trees for optimal succinctness, and beyond", 《FOUNDATIONS OF COMPUTER SCIENCE》 * |
ROBERTO GROSSI 等: "Design of Practical Succinct Data Structures for Large Data Collections", 《CITESEER》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114065733A (zh) * | 2021-10-18 | 2022-02-18 | 浙江香侬慧语科技有限责任公司 | 基于机器阅读理解的依存句法分析方法、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3037986A4 (en) | 2017-01-04 |
US20160196303A1 (en) | 2016-07-07 |
JPWO2015025467A1 (ja) | 2017-03-02 |
JP6072922B2 (ja) | 2017-02-01 |
WO2015025467A1 (ja) | 2015-02-26 |
EP3037986A1 (en) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102768681B (zh) | 一种用于搜索输入的推荐系统及方法 | |
CN108038183B (zh) | 结构化实体收录方法、装置、服务器和存储介质 | |
CN108829658B (zh) | 新词发现的方法及装置 | |
CN112015949A (zh) | 视频生成方法和装置、存储介质及电子设备 | |
CN105474214A (zh) | 文本字符串搜索设备、文本字符串搜索方法和文本字符串搜索程序 | |
CN104035975B (zh) | 一种利用中文在线资源实现远程监督人物关系抽取的方法 | |
CN101794307A (zh) | 基于互联网分词思想的车载导航poi搜索引擎 | |
CN103389988A (zh) | 一种引导用户进行信息搜索的方法及装置 | |
CN103703459A (zh) | 基于字符变换和无监督网络数据的文本消息规格化方法和系统 | |
CN109902142B (zh) | 一种基于编辑距离的字符串模糊匹配和查询方法 | |
CN110083683B (zh) | 基于随机游走的实体语义标注方法 | |
CN103198067A (zh) | 一种业务搜索方法及系统 | |
CN108446316A (zh) | 联想词的推荐方法、装置、电子设备及存储介质 | |
CN104778256A (zh) | 一种领域问答系统咨询的快速可增量聚类方法 | |
CN104199954A (zh) | 一种用于搜索输入的推荐系统及方法 | |
US8484229B2 (en) | Method and system for identifying traditional arabic poems | |
CN106997339A (zh) | 文本特征提取方法、文本分类方法及装置 | |
CN113806531A (zh) | 药物关系分类模型构建方法、药物关系分类方法及系统 | |
US20120254190A1 (en) | Extracting method, computer product, extracting system, information generating method, and information contents | |
CN112860685A (zh) | 对数据集的分析的自动推荐 | |
CN104268176A (zh) | 一种基于搜索关键词的推荐方法及系统 | |
CN114707007A (zh) | 一种图像文本检索方法、装置及计算机存储介质 | |
CN111259223B (zh) | 基于情感分析模型的新闻推荐和文本分类方法 | |
CN113468866B (zh) | 非标准json串的解析方法及装置 | |
CN111090338B (zh) | 医疗文书的hmm输入法模型的训练方法、输入法模型和输入方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160406 |
|
WD01 | Invention patent application deemed withdrawn after publication |