用于搜索字串的方法和设备与流程

文档序号:11276418阅读:154来源:国知局
用于搜索字串的方法和设备与流程

本公开的实施例总体上涉及信息搜索领域,并且更具体地,涉及用于搜索字串的方法和设备。



背景技术:

在信息搜索领域中,诸如倒排索引之类搜索技术可被用来在海量文档(例如,互联网上的网页)中搜索给定的字串。在传统的倒排索引技术中,待搜索的字符串被划分为项(token)。在此使用的术语“项”是指组成字串的单位,诸如字符、单词、词组,等等。在进行搜索时,会对包含所有项的所有文档进行搜索。

这种搜索所面临的最大问题是搜索效率。可以理解,对于字串中的每一项,可能存在包含该项的大量文档;反之,在一个文档中,每一项可能出现数次。传统的搜索引擎必须处理所有这些文档中的所有这些项。这极大地降低了搜索效率,使得字串搜索成为一个耗时的过程。迟缓的响应转而降低了使用搜索引擎的用户体验。



技术实现要素:

总体上,本公开的实施例提出用于搜索字串的方法和设备。

根据本公开的第一方面,提供了一种用于搜索字串的方法,包括:确定包含该字串中的第一项的第一文档集合,以及包含该字串中的第二项的第二文档集合;以及基于该第一文档集合和该第二文档集合生成第三文档集合,该第三文档集合中的文档:i)被包括在该第一文档集合和该第二文档集合二者中,并且ii)该第一项和该第二项在该文档中的距离等于该第一项和该第二项在该字串中的距离。

根据本公开的第二方面,提供了一种用于搜索字串的设备,包括: 处理单元,被配置用于:确定包含该字串中的第一项的第一文档集合,以及包含该字串中的第二项的第二文档集合;以及基于该第一文档集合和该第二文档集合生成第三文档集合,该第三文档集合中的文档:i)被包括在该第一文档集合和该第二文档集合二者中,并且ii)该第一项和该第二项在该文档中的距离等于该第一项和该第二项在该字串中的距离。

根据本公开的第三方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机可读存储介质上,并且包括机器可执行指令,该指令在被执行时使得机器执行根据本公开的第一方面的方法的步骤。

应当理解,发明内容部分中所描述的内容并非旨在限定本公开实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。

附图说明

结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:

图1示出了本公开的实施例适用于其中的示例环境;

图2示出了根据本公开的某些实施例的用于搜索字串的方法的流程图;

图3示出了根据本公开的某些实施例的在搜索字串过程中生成文档集合的示例过程;以及

图4示出了可以用来实施本公开的实施例的计算设备的示意性框图。

在所有附图中,相同或相似参考数字表示相同或相似元素。

具体实施例

下面将参照附图更详细地描述本公开的实施例。虽然附图中显示 了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。

在此使用的术语“包括”、“包含”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”。其他术语的相关定义将在下文描述中给出。

如上所述,在传统搜索技术中,对包含待搜索字串中的所有项的所有文档进行搜索。然而,一般而言,作为搜索对象的文档的数目非常庞大,而每个文档中包含的各项的数目也可能多达数百万。因此,传统搜索技术往往需要相当大的运算量,导致整个搜索过程非常耗时。

为了解决这些以及其他潜在问题,本公开的实施例提供一种用于搜索字串的方法。该方法基于包含字串中的两个项的两个文档集合,生成新的文档集合。该新的文档集合被包括在这两个文档集合中,并且这两个项在该新的文档集合中的各文档中的距离等于它们在字串中的距离。如此,可以基于新的文档集合执行字串搜索。这种搜索方式有效减少了需要搜索的文档的数目,从而显著减少了搜索过程中所需的运算量,提高了搜索性能。

首先参考图1描述本公开实施例的一般原理。图1示出了本公开的实施例可以实施于其中的示例环境100。计算设备110可以是具有字串搜索功能的任意适当设备。计算设备110的示例包括但不限于:服务器、个人计算机(pc)、膝上型计算机、平板式计算机、个人数字助理(pda)、移动电话、智能手机、智能眼镜、智能手表,等等。

如图所示,计算设备110可以向用户呈现用户界面(ui)111,例如图形用户界面(gui)。ui111显示有供用户输入待搜索字串的域(field)112。计算设备110可以经由诸如键盘、手写输入或语音 输入来接收用户输入的待搜索的字串。应当理解,用户界面111仅仅示例性的,无意对本公开的范围施加任何限制。例如,在一个备选实施例中,待搜索的字串可由另一计算设备(未示出)接收,并且提供给计算设备110。

计算设备110在获得待搜索字串后,可以将该字串拆分为多个项,并且为其中的每个项确定包含该项的文档的集合。根据本公开的实施例,计算设备110可以将包含两个项的两个文档集合合并成新的文档集合,使得新文档集合中的每个文档都包含这两个项,并且这两个项在每个文档中的距离等于它们在字串中的距离。作为示例,在某些实施例中,合并操作可以开始于包含文档数目最少的两个文档集合,这将在下文详述。

如图1所示,假设用户输入字串“aabbccdd”112。计算设备110首先根据给定的字串切分方法将该字串切分为项,例如“aa”、“bb”、“cc”和“dd”。这仅仅是示例性的,无意以任何方式限制本公开的范围。任何目前已知或者将来开发的字串切分算法都可以与本公开的实施例结合使用。

继而,对于每个项,可以确定包含该项的文档的集合。由此,可以获得四个文档集合121、122、123和124。文档集合121中的文档包含项“aa”,文档集合122中的文档包含项“bb”,文档集合123中的文档包含项“cc”,并且文档集合124中的文档包含项“dd”。在某些实施例中,四个文档集合121、122、123和124可以以列表的形式存储于计算设备110的存储单元中。任何其他适当的数据结构也是可行的。

接下来,计算设备110根据预定的标准从文档集合中选择两个或多个。如上所述,文档选择标准的一个示例是文档集合的大小。也即,计算设备110可以初始地选择所包含的文档数目比较少(例如,最少)的两个或多个文档集合。为讨论目的,假设首先选择了文档集合122和123。所选择的文档集合122和123继而被合并为新文档集合125。合并的总体原则是,对于新集合125中的每个文档:(i)该文档同时 处于文档集合122和123中,也即,同时包含项“bb”和“cc”;并且(ii)项bb和cc在该文档中的距离与其在字串112中相同。项之间的距离的度量将在下文描述。依照这样的原则,在此例中,文档4和文档16将被归入新文档集合125。

通过以这样的方式来合并文档集合,能够显著地提高搜索的效率。下面将结合若干示例,详细描述合并的过程及其效果。图2示出了根据本公开的实施例的搜索字串的过程。图2中所示的方法200可以由计算设备110来执行。为讨论方便,以下将结合图1来描述方法200。

如图2所示,在步骤202中,计算设备110确定包含待搜索的字串(例如,图1中的“aabbccdd”)中的第一项的第一文档集合,以及包含字串中的第二项的第二文档集合。“第一项”和“第二项”是从字串中包含的多个项中选出的,例如图1所描述示例中的“bb”和“cc”。

如上所述,可以根据各种标准来选择第一项和第二项。例如,可以按照各个文档集合中的文档数目从少到多的顺序来确定第一项和第二项。也就是说,可以首先按照与各个项对应的文档集合中所包含的文档数目,对这些文档集合进行排序。而后,选择包括文档数目较少的文档集合。特别地,在一个实施例中,可以选择包含文档数目最少的两个或更多文档集合。以此方式,可以显著降低在下文将要描述的文档集合合并以及后续处理中的运算量。应当理解,上述选择文档数目最少的文档集合仅仅是示例,其他选择方式也是可行的。例如,可以随机选择随机选择文档集合,或者选择包括文档数目较多的文档集合用于合并。

方法200进行到步骤204,在此基于第一文档集合和第二文档集合生成第三文档集合。第三文档集合中的任何文档都应满足如下条件:i)被包括在第一文档集合和第二文档集合二者中,并且ii)第一项和第二项在该文档中的距离等于第一项和第二项在字串中的距离。

仍然参考图1的示例,在合并第一项“bb”所对应的文档集合122和第二项“cc”所对应的文档集合123时,要考虑如下两个条件。 第一,新文档集合125中的每个文档都要被包括在文档集合122和123中。也就是说,文档集合125中的文档要同时包含第一项“bb”和第二项“cc”。第二,项“bb”和“cc”在文档集合125中的每个文档中的距离要与其在待搜索字串“aabbccdd”中的距离相等。字串之间的距离可以按照各种方式来度量,例如欧氏距离、汉明距离,等等。作为一个示例,如果两个项紧邻,则二者之间的距离为0;如果两个项之间间隔一个其他项,则二者之间的距离为1;以此类推。

在某些实施例中,每个项的文档集合中的每个文档可以具有一个位置列表,其中记录着对应的项在该文档中出现的位置。例如,在图1所示的示例中,在第一项“bb”的文档集合122中,文档4和文档16分别具有位置列表131和132。以位置列表32为例,其指明:项“bb”出现在文档4的位置32、…以及位置u处。通过检索这样的位置列表,可以快速地确定项在文档中的位置以及不同项在任何一个文档中的距离。当然,这并不是必须的,在某些实施例中也可以在运行时计算项之间的距离。

在某些实施例中,在步骤204,上述两个条件可以被依次应用。例如,在图1描述的示例中,可以首先获取文档集合122和123的交集。该交集中的文档即包含项“bb”和“cc”二者。确定交集的方式有很多种。例如,可以将文档集合122作为基准,对文档集合123进行筛查。如果文档集合122中的某个文档未被包括在文档集合123中,则将该文档从文档集合122中移除。最后保留下来的元素即为文档集合122和123的交集。交集中所包含的文档被称为“候选文档”。第二个条件可被应用于交集中的候选文档,以确定哪些候选文档中“bb”和“cc”的距离与这两个项在字串112中相同。满足第二条件的那些候选文档构成了第三文档集合125。

备选地,也可以在扫描文档集合时同时应用上述两个条件。例如,在确定某个文档被包括在文档集合122和123二者之中后,可以随即确定项“bb”和“cc”在该文档中的距离是否与这两个项在字串112中的距离相等。如果是,则将该文档添加到第三文档集合125中。否 则,可以直接将该文档排除在后续处理之外。

可选地,在某些实施例中,在生成第三文档集合之后,可以基于第三文档集合重复地执行步骤202和204一次或多次,以实现文档集合的进一步合并。例如,可以确定包含字串中的第三项的第四文档集合,并且通过将第三文档集合和第四文档集合合并,来生成第五文档集合。类似于上文描述的合并原则,第五文档集合中的文档应当满足如下条件:i)被包括在第三文档集合和第四文档集合二者中,并且第一项和第三项在该文档中的距离等于第一项和第三项在字串中的距离,并且第二项和第三项在该文档中的距离等于第二项和第三项在字串中的距离。

与上述确定第一文档集合和第二文档集合的过程类似,可以选择任意其他文档集合作为第四文档集合。在某些实施例中,可以选择目前剩余的文档集合中文档数目较少的那个文档集合作为第四文档集合。例如,在图1的示例中,在已经选择了文档数目最少的两个文档集合122和123来生成第三文档集合125的情况下,可以选择文档数目第三少的文档集合121,与第三文档集合125进行下一轮的合并。合并的原理和具体过程已在上文详述,故在此不再赘述。

在某些实施例中,新文档集合生成的过程可以一直进行,直到找出包含待搜索字串中的所有项的文档为止。作为备选,在某些实施例中,可以在满足给定条件之后停止这种合并,然后执行常规搜索过程。例如,可以在新的文档集合中文档的数目少于预定阈值时停止。备选地或附加地,也可以在已经进行的合并轮数超过预定数目之后停止,等等。常规搜索过程是本领域已知的,故文本不对此进行讨论。

图3示出了根据本公开的某些实施例的在搜索字串过程中生成文档集合的示例过程。图3所示的示例过程可以视为图1所示的文档集合生成过程的后续示例实现。上文结合图1已经描述,计算设备110基于文档集合121、122、123和124中文档数目最少的文档集合122和123生成了新的文档集合125。新生成的文档集合125中包括文档4和文档16。

接下来,如图3所示,基于第三文档集合125继续执行新文档集合的生成。在此示例中,文档集合121中的文档数目少于文档集合124,所以使用第四文档集合121与第三文档集合125一起,来生成新的第五文档集合301。因为文档集合121中包括文档16但不包括文档4,所以新生成的文档集合301只包括文档16。至此,新文档集合生成过程停止,执行常规搜索过程。例如,直接在文档16中搜索字串“aabbccdd”,或者基于相关联的位置集合确定文档16中是否包含位置连续的“aa”、“bb”、“cc”和“dd”。根据本公开的实施例,通过这种文档集合的渐进合并,能够极大地改善搜索效率,降低响应时间,从而提高用户体验。

图4示出了一个可以用来实施本公开的实施例的计算设备400的示意性框图。如图4所示,计算设备400包括中央处理单元(cpu)401,其可以根据存储在只读存储器(rom)402中的计算机程序指令或者从存储单元408加载到随机访问存储器(ram)403中的计算机程序指令,来执行各种适当的动作和处理。在ram403中,还可存储设备400操作所需的各种程序和数据。cpu401、rom402以及ram403通过总线404彼此相连。输入/输出(i/o)接口405也连接至总线404。

计算设备400中的多个部件连接至i/o接口405,包括:输入单元406,例如键盘、鼠标等;输出单元407,例如各种类型的显示器、扬声器等;存储单元408,例如磁盘、光盘等;以及通信单元409,例如网卡、调制解调器、无线通信收发机等。通信单元409允许设备400通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

在某些实施例中,cpu401可被配置为执行上文所描述的各个过程和处理,例如方法200。例如,在一些实施例中,方法200可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元408。在一些实施例中,计算机程序的部分或者全部可以经由rom和/或通信单元409而被载入和/或安装到计算设备400上。当计算机 程序被加载到ram并由cpu401执行时,可以执行上文描述的方法200的一个或多个步骤。

特别地,根据本公开的实施例,文参考图1、图2和图3a至图3c描述的过程可以被实现为计算机程序产品,其可以被有形地存储在非瞬态计算机可读存储介质上,并且包括机器可执行指令,该指令在被执行时使得机器实现根据本公开的各个方面。

计算机可读存储介质可以是可以存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的、非穷举的例子包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如java、smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来 通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。

这里参照根据本公开实施例的设备、方法和计算机程序产品的框图和/或流程图描述了本公开的各个方面。应当理解,框图和/或流程图的每个方框以及框图和/或流程图中各方框的组合,都可以由计算机可读程序指令实现。

已经出于示例的目的描述了本公开的各个实施例,但是本公开并不意图限于所公开的这些实施例。在不脱离本公开实质的前提下,所有修改和变型均落入由权利要求所限定的本公开的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1