发明内容
本发明实施例提供了一种搜索处理方法及装置,以解决现有技术中的搜索处理方法当备选字符串数量较多时,需要将检索字符串逐一与备选字符串计算最小编辑距离,因此运算量较大,导致系统响应时间过长,影响用户体验的问题。
为了解决上述技术问题,本发明实施例公开了如下技术方案:
一方面,提供了一种检索方法,所述方法包括:
一种搜索处理方法,其特征在于,所述方法包括:
根据接收的检索字符串,生成若干与所述检索字符串具有预定编辑距离的备选字符串;
分别利用备选词库的字典树查找所述备选字符串;
如果查找到所述备选字符串,则作为推荐检索字符串提供给用户。
可选的,所述方法还包括:根据所述备选词库建立字典树,所述字典树的节点存储有指向子节点的地址指针数组,所述数组中的地址指针的值分别与所述子节点对应的字符的编码值相同;
所述分别利用备选词库的字典树查找所述备选字符串包括:在所述字典树中依次查找所述备选字符串包含的字符,以待查找字符的编码值作为当前节点的地址指针的查询索引。
可选的,所述根据备选词库建立字典树之前,所述方法还包括:
根据所述备选词库中的字符串获得所述字符串对应的完备字符集合;
将所述完备字符集合中的各字符分别编码,以使所述字符的编码值为从预设值开始连续变化的整数,所述预设值为大于等于1的整数。
可选的,所述生成若干与所述检索字符串具有预定编辑距离的备选字符串包括:
预定义备选字符集合,预设编辑距离;
根据所述备选字符集合和所述编辑距离对所述检索字符串进行如下编辑操作中的至少一个,生成与所述检索字符串具有所述编辑距离的备选字符串:
在所述检索字符串中插入至少一个字符,所述至少一个字符为所述备选字符集合中的字符;
将所述检索字符串中的至少一个字符替换成所述备选字符集合中的字符;
将所述检索字符串中的至少一个字符删除。
可选的,所述根据接收的检索字符串,生成若干与所述检索字符串具有预定编辑距离的备选字符串包括:若需要删除所述检索字符串中的目标字符时,以预设的自定义字符替换所述目标字符;
所述分别利用备选词库的字典树查找所述备选字符串包括:当查找至所述目标字符串中的自定义字符时,忽略所述自定义字符后,继续查找与所述自定义字符相邻的下一个字符。
可选的,所述如果查找到所述备选字符串,则作为推荐检索字符串提供给用户包括:
如果查找到至少两个所述备选字符串,则根据所述备选字符串的权重从所述备选字符串中选择所述推荐检索字符串提供给用户。
可选的,所述根据所述备选字符串的权重从所述备选字符串中选择所述推荐检索字符串提供给用户包括:
根据备选字符串在用户的检索历史记录中出现的频率,或根据备选字符串在预设的备选检索资料中出现的频率,从所述备选字符串中选择所述推荐检索字符串提供给用户。
另一方面,提供了一种搜索处理装置,所述装置包括:
生成单元,用于根据接收的检索字符串,生成若干与所述检索字符串具有预定编辑距离的备选字符串;
查找单元,用于分别利用备选词库的字典树查找所述备选字符串;
推荐单元,用于如果查找到所述备选字符串,则作为推荐检索字符串提供给用户。
可选的,所述装置还包括:
建立单元,用于根据所述备选词库建立字典树,所述字典树的节点存储有指向子节点的地址指针数组,所述数组中的地址指针的值分别与所述子节点对应的字符的编码值相同;
所述查找单元具体用于在所述字典树中依次查找所述备选字符串包含的字符,以待查找字符的编码值作为当前节点的地址指针的查询索引。
可选的,所述装置还包括:
获得单元,用于根据所述备选词库中的字符串获得所述字符串对应的完备字符集合;
编码单元,用于将所述完备字符集合中的各字符分别编码,以使所述字符的编码值为从预设值开始连续变化的整数,所述预设值为大于等于1的整数。
可选的,所述生成单元包括:
预定义子单元,用于预定义备选字符集合,以及预设编辑距离;
编辑子单元,用于根据所述备选字符集合和所述编辑距离对所述检索字符串进行编辑操作,生成与所述检索字符串具有所述编辑距离的备选字符串,所述编辑子单元至少包括一个如下子单元:
插入编辑子单元,用于在所述检索字符串中插入至少一个字符,所述至少一个字符为所述备选字符集合中的字符;
替换编辑子单元,用于将所述检索字符串中的至少一个字符替换成所述备选字符集合中的字符;
删除编辑子单元,用于将所述检索字符串中的至少一个字符删除。
可选的,所述生成单元具体用于若需要删除所述检索字符串中的目标字符时,以预设的自定义字符替换所述目标字符;
所述查找单元具体用于当查找至所述目标字符串中的自定义字符时,忽略所述自定义字符后,继续查找与所述自定义字符相邻的下一个字符。
可选的,所述推荐单元包括:
权重推荐子单元,用于如果查找到至少两个所述备选字符串,则根据所述备选字符串的权重从所述备选字符串中选择所述推荐检索字符串提供给用户。
可选的,所述权重推荐子单元,具体用于根据备选字符串在用户的检索历史记录中出现的频率,或根据备选字符串在预设的备选检索资料中出现的频率,从所述备选字符串中选择所述推荐检索字符串提供给用户。
上述技术方案提供的检索方法及装置,首先根据接收的检索字符串,生成若干与所述检索字符串具有预定编辑距离的备选字符串,再分别利用备选词库的字典树查找所述备选字符串,如果查找到所述备选字符串,则作为推荐检索字符串提供给用户。本方案根据预设的编辑距离生成数量可控的备选字符串,因此算法计算量较为恒定,不会随备选词库的字符串数量的增加而增长;并且生成的备选字符串无需与备选词库中的字符串逐一计算编辑距离,而是利用搜索速度较快的字典树对备选字符串进行进一步筛选后获得推荐检索字符串,提高了检索处理速度。
具体实施方式
首先对本发明一种搜索处理方法提供的实施例进行说明,参见图1,为本发明一种搜索处理方法提供的一个实施例的流程示意图,本实施例包括如下步骤:
步骤101:根据接收的检索字符串,生成若干与所述检索字符串具有预定编辑距离的备选字符串。
当用户输入检索字符串A时,通过插入,和/或删除,和/或替换字符串A中的指定字符的方式,生成与所述字符串A的编辑距离为预定编辑距离的备选字符串。
例如预定编辑距离为1,假设用户输入的检索字符串为“lovf”,则可替换该字符串中的最后一个字符“f”,将其替换成26个小写字母中除了“f”之外的其他任意字符,这样共编辑生成25个备选字符串。
步骤102:分别利用备选词库的字典树查找所述备选字符串。
字典树又称为Trie树或查找树,是一种存储字符串的形式。根据备选词库建立字典树后,备选词库中的每一个字符串都能表示为字典树中的某一条从根节点出发的路径,该路径经过的节点所代表的字符顺序连起来即是该字符串。
通过预先扫描大量用户的搜索历史,并观察用户在搜索引擎中输入的检索字符串,确定一个能够覆盖绝大多数用户输入的检索字符串的集合,称为备选词库。
假设备选词库为{love,lover,like,move,moon},如图2所示即是根据该备选词库建立的字典树的结构示意图,(实际应用中备选词库包含的字符串的数量很多,因此字典树的结构较为复杂,本发明仅为示意性的介绍字典树的结构),图中节点左边的编号即为该节点的层级,该字典树共有6级,第0层级的节点为根节点,根节点为空,不代表任何字符。
步骤103:如果查找到所述备选字符串,则作为推荐检索字符串提供给用户。
在字典树查找所述备选字符串,如果查找到所述备选字符串,则所述备选字符串可以作为推荐检索字符串提供给用户,以供用户进一步根据该推荐检索字符串进行检索。
上述步骤101的例子中共生成25个备选字符串,可利用图2的字典树逐个查找这些字符串,最终在字典树种查找到了“love”这个备选字符串,其他24个备选字符串都没有在该字典树中查找到,因此,可将“love”这个字符串作为推荐检索字符串提供给用户。
本实施例首先根据接收的检索字符串,生成若干与所述检索字符串具有预定编辑距离的备选字符串,再分别利用备选词库的字典树查找所述备选字符串,如果查找到所述备选字符串,则作为推荐检索字符串提供给用户。本实施例根据预设的编辑距离生成数量可控的备选字符串,因此算法计算量较为恒定,不会随备选词库的字符串数量的增加而增长;并且生成的备选字符串无需与备选词库中的字符串逐一计算编辑距离,而是利用搜索速度较快的字典树对备选字符串进行进一步筛选后获得推荐检索字符串,提高了检索处理速度。
参见图3,为本发明搜索处理方法提供的另一个实施例的流程示意图,本实施例包括如下步骤301至步骤304:
步骤301:根据备选词库建立字典树,所述字典树的节点存储有指向子节点的地址指针数组,所述数组中的地址指针的值分别与所述子节点对应的字符的编码值相同。
仍以图2所示的字典树为例进行说明,在该字典树中,根节点的两个1级子节点分别为“l”和“m”,在根节点中,存储有指向这两个1级子节点的地址指针数组。所述数组中的地址指针的值分别与这两个1级子节点对应的字符的编码值相同。其他各级子节点也是如此。
需要注意的是,上述子节点的地址指针的值都是相对值而不是绝对值,是以其父节点地址作为基地址的地址偏移量。
步骤302:根据接收的检索字符串,生成若干与所述检索字符串具有预定编辑距离的备选字符串。
在该步骤中,可以预定义备选字符集合,预设编辑距离,并根据所述备选字符集合和所述编辑距离对所述检索字符串进行如下3021、3022、3023中的至少一项编辑操作,以生成与所述检索字符串具有所述编辑距离的备选字符串:
3021:在所述检索字符串中插入至少一个字符,所述至少一个字符为所述备选字符集合中的字符;和/或
3022:将所述检索字符串中的至少一个字符替换成所述备选字符集合中的字符;和/或
3023:将所述检索字符串中的至少一个字符删除。
例如预定编辑距离为1,预定义备选字符集合为26个小写字母,假设用户输入的检索字符串为lovf,替换该字符串中的最后一个字符“f”,将其替换成26个小写字母中除了“f”之外的其他任意字符,可编辑生成25个备选字符串。
步骤303:在所述字典树中依次查找所述备选字符串包含的字符,以待查找字符的编码值作为当前节点的地址指针的查询索引。
假设要查找的备选字符串为“love”,现有的常规查找方法为,根据根节点中包含的1级子节点的指针,依次在这些地址指针指向的内存地址中寻找,看是否有“l”这个字符,如果有,再从2级子节点中查找是否有“o”这个字符,其他字符的查找依次进行。
而本实施例在建立字典树时,将字典树中的节点包含的子节点的地址指针与所述子节点对应的字符的编码值设置为相同值,这样在查找备选字符串中的各个字符时,就不用依次读取各级节点包含的地址指针所指向的内存地址中的内容,再判断该内容是否是待查找的字符,而是直接根据待查找的字符的编码值去内存中查找该编码值所代表的内存地址,看起是否是待查找的字符,因此查找速度较快。
步骤304:如果查找到所述备选字符串,则作为推荐检索字符串提供给用户。
如图4所示,为本发明一种搜索处理方法的另一个实施例的流程示意图,本实施例包括如下步骤:
步骤401:根据备选词库中的字符串获得所述字符串对应的完备字符集合。
统计备选词库中的所有字符串所包含的字符,并将这些字符去重,形成一个完备字符集合,所述备选词库中的字符串所包含的字符都在该完备字符集合中。
步骤402:将所述完备字符集合中的各字符分别编码,以使所述字符的编码值为从预设值开始连续变化的整数,所述预设值为大于等于1的整数。
完备字符集合中的字符的原有编码值并不一定是连续的整数,以计算机中常用的ASCII码为例,ASCII码对应的十进制数值为0至127,共对应128个不同的字符,但完备字符集合并不一定全部包含这128个字符,尤其是一些特殊字符例如“$”、“*”等字符在检索中并不常见,因此完备字符集合中的字符的原有编码值一般都是不连续的。
在本步骤中,将完备字符集合中的字符重新编码,将其编码为从预设值开始连续变化的整数,优选的,该编码值可以从1开始连续递增。
参见上述实施例的步骤303的相关描述可知,在字典树中,节点存储的子节点所代表的字符的编码值与该子节点的地址指针的值相同,因此字符的编码值越大,则意味着地址指针的值越大,从该节点索引到其子节点的地址的路径就越长,这一索引过程占用的时间就越长。而如果将完备字符集合中的字符的编码值从一个较小的数值开始连续编码,这样就可以使字符的编码值即子节点的地址指针的值最小化,从而提高索引到子节点的速度,进而提高字典树的查找速度。此外,采用连续编码也可以保证在该编码值所代表的内存地址范围(即完备字符集合在内存空间中存储的地址范围)的连续性,防止存储地址零散化,节约存储空间。
步骤403:根据所述备选词库建立字典树,所述字典树的节点存储有指向子节点的地址指针数组,所述数组中的地址指针的值分别与所述子节点对应的字符的编码值相同。
步骤404:根据接收的检索字符串,生成若干与所述检索字符串具有预定编辑距离的备选字符串。
步骤405:在所述字典树中依次查找所述备选字符串包含的字符,以待查找字符的编码值作为当前节点的地址指针的查询索引。
步骤406:如果查找到所述备选字符串,则作为推荐检索字符串提供给用户。
在向用户推荐检索字符串时,可具体从查找到的若干备选字符串中,选择权重比较高的字符串推荐给用户,该权重具体可以是根据备选字符串在用户的检索历史记录中出现的频率,或根据备选字符串在预设的备选检索资料中出现的频率。
例如,当用户输入的检索字符串为“aove”时,在预设编辑距离为1的条件下,编辑生成的备选字符串中包括“love”和“move”。在字典树种进行查找后发现,“love”和“move”都出现在字典树中。而通过统计发现,在用户的检索历史中,“love”出现的频率比“move”要高,因此可选择向用户推荐“love”作为推荐检索字符串,或者将“love”作为最优选的检索字符串提供给用户。
在上述实施例的步骤404或本发明的其他实施例中,根据用户输入的检索字符串编辑生成与所述检索字符串的编辑距离为预设距离的备选字符串时,当需要删除所述检索字符串中的目标字符时,以预设的自定义字符替换所述目标字符。
参考背景技术中的相关描述,现有技术中,一般是根据“插入”、“删除”、“替换”字符的方式对字符串进行编辑。以“删除”这个编辑操作为例,例如需要将字符串“lovve”中的第一个“v”字符删除,即将其编辑成目标字符串“love”时,现有的实现方法是,将原字符串“lovve”中包含的“ve”,在内存中复制一次,再将该复制后的字符串“ve”覆盖掉原字符串中的“vve”的位置,因此这种实现“删除”的方法会有一次内存复制的过程,比较浪费内存。
有鉴于此,本发明中提供了另外一种实现“删除”操作的具体方法,即以预设的自定义字符替换欲删除的目标字符,将“删除”操作通过“替换”操作来实现。该预设的自定义字符与现有的任何字符都不相同,由于是自定义的字符,因此不在本说明书中具体提供其字形,而只以“自定义”来代替并对其使用方式进行描述。
仍以将上述字符串“lovve”中的字符“v”删除为例,在具体实现时,用“自定义”这个字符来替换需要删除的字符“v”,将原字符串编辑为目标字符串“lo自定义ve”。
与此对应的,在根据字典树查找所述备选字符串时,当查找至所述目标字符串中的自定义字符时,忽略所述自定义字符后,继续查找与所述自定义字符相邻的下一个字符。
例如,在如图2所示的字典树中查找字符串“lo自定义ve”时,在2级子节点中查找到字符“o”之后,根据“自定义”这个字符的标识或编码值判定出下一个要查找的字符为“自定义”字符,则不对该自定义字符进行查找,而是继续查找该自定义字符后面的字符“v”。
上述搜索处理方法的实施例,首先根据接收的检索字符串,生成若干与所述检索字符串具有预定编辑距离的备选字符串,再分别利用备选词库的字典树查找所述备选字符串,如果查找到所述备选字符串,则作为推荐检索字符串提供给用户。本实施例根据预设的编辑距离生成数量可控的备选字符串,因此算法计算量较为恒定,不会随备选词库的字符串数量的增加而增长;并且生成的备选字符串无需与备选词库中的字符串逐一计算编辑距离,而是利用搜索速度较快的字典树对备选字符串进行进一步筛选后获得推荐检索字符串,提高了检索处理速度。
与上述搜索处理方法的实施例相对应,本发明还提供了一种搜索处理装置的实施例,参见图5,为本发明提供的一种搜索处理装置的一个实施例的结构示意图,所述装置包括:生成单元501、查找单元502、推荐单元503。
其中,所述生成单元501,用于根据接收的检索字符串,生成若干与所述检索字符串具有预定编辑距离的备选字符串。
所述查找单元502,用于分别利用备选词库的字典树查找所述备选字符串。
所述推荐单元503,用于如果查找到所述备选字符串,则作为推荐检索字符串提供给用户。
如图6所示为本发明提供的一种搜索处理装置的另一个实施例的结构示意图,所述装置还包括:建立单元504,用于根据所述备选词库建立字典树,所述字典树的节点存储有指向子节点的地址指针数组,所述数组中的地址指针的值分别与所述子节点对应的字符的编码值相同。
所述查找单元502,具体用于在所述字典树中依次查找所述备选字符串包含的字符,以待查找字符的编码值作为当前节点的地址指针的查询索引。
如图6所示,可选的,所述装置还包括:获得单元505、编码单元506。
所述获得单元505,用于根据所述备选词库中的字符串获得所述字符串对应的完备字符集合;
所述编码单元506,用于将所述完备字符集合中的各字符分别编码,以使所述字符的编码值为从预设值开始连续变化的整数,所述预设值为大于等于1的整数。
可选的,所述生成单元501包括:
预定义子单元(图中未示出),用于预定义备选字符集合,以及预设编辑距离;
编辑子单元(图中未示出),用于根据所述备选字符集合和所述编辑距离对所述检索字符串进行编辑操作,生成与所述检索字符串具有所述编辑距离的备选字符串,所述编辑子单元至少包括一个如下子单元:
插入编辑子单元(图中未示出),用于在所述检索字符串中插入至少一个字符,所述至少一个字符为所述备选字符集合中的字符;
替换编辑子单元(图中未示出),用于将所述检索字符串中的至少一个字符替换成所述备选字符集合中的字符;
删除编辑子单元(图中未示出),用于将所述检索字符串中的至少一个字符删除。
可选的,所述生成单元501具体用于若需要删除所述检索字符串中的目标字符时,以预设的自定义字符替换所述目标字符;
所述查找单元502具体用于当查找至所述目标字符串中的自定义字符时,忽略所述自定义字符后,继续查找与所述自定义字符相邻的下一个字符。
可选的,所述推荐单元503包括:权重推荐子单元(图中未示出),用于如果查找到至少两个所述备选字符串,则根据所述备选字符串的权重从所述备选字符串中选择所述推荐检索字符串提供给用户。
可选的,所述权重推荐子单元,具体用于根据备选字符串在用户的检索历史记录中出现的频率,或根据备选字符串在预设的备选检索资料中出现的频率,从所述备选字符串中选择所述推荐检索字符串提供给用户。
本发明提供的一种搜索处理装置的实施例,技术方案本质与上述一种搜索处理方法的实施例相同,因此未做具体解释描述,相关之处可参见上述一种搜索处理方法的实施例的对应部分。
上述技术方案提供的搜索处理装置的实施例,首先根据接收的检索字符串,生成若干与所述检索字符串具有预定编辑距离的备选字符串,再分别利用备选词库的字典树查找所述备选字符串,如果查找到所述备选字符串,则作为推荐检索字符串提供给用户。本实施例根据预设的编辑距离生成数量可控的备选字符串,因此算法计算量较为恒定,不会随备选词库的字符串数量的增加而增长;并且生成的备选字符串无需与备选词库中的字符串逐一计算编辑距离,而是利用搜索速度较快的字典树对备选字符串进行进一步筛选后获得推荐检索字符串,提高了检索处理速度。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件的方式来实现,通用硬件包括通用集成电路、通用CPU、通用存储器、通用元器件等,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。