用于搜索多个串的方法和系统的制作方法

文档序号:6638145阅读:182来源:国知局
用于搜索多个串的方法和系统的制作方法【专利摘要】本发明涉及用于搜索多个串的方法和系统。该系统可以包括:存储分别以第一字开始的图样串;对于每个不同的第一字,存储该第一字和以该第一字开始的图样串的每个不同串长度的组合;在文本中识别与第一图样字之一相匹配的字;迭代地基于以识别出的字开始的串从文本中提取串,并将与串长度之一相等的串长度与匹配的第一字一起存储;迭代地将每个提取出的串和具有与该子串相同的第一字和串长度的每个图样串相比较;以及基于该比较确定至少一个提取出的串与所述图样串之一匹配。【专利说明】用于搜索多个串的方法和系统[0001]本申请是原案申请号为201010116709.X的发明专利申请(申请日:2010年2月26日,发明名称:用于搜索多个串的方法和系统)的分案申请。【
技术领域
】[0002]本发明一般地涉及信息处理的【
技术领域
】,更具体而言,涉及用于信息搜索的方法和系统。【
背景技术
】[0003]随着计算机和网络相关技术的发展,越来越多的人执行数字搜索来识别或找到数字文档中满足他们的需求的特定内容。例如,人们(例如父母)或权威机构可以尝试在孩子们可获得的数字文档中找到某些不适合孩子的限制内容(例如串、表达或词),然后使得孩子们远离这些内容。但是,在很多情形中,由于例如数字文档的大小和/或数量庞大,人们或权威机构识别或找到这些限制内容是一项耗时的任务。因此,需要改进的搜索方法,用来执行高效的搜索和减少搜索时间。【
发明内容】[0004]本申请的目的是要提供用于基于多个串的第一字和长度的组合来高效地执行对多个串的搜索以减少搜索时间的系统和方法。[0005]根据本申请的第一方面,提供了一种用于通过使用一个或多个处理器执行驻留在计算机中的指令来从文本中搜索多个串的系统。该系统包括:第一存储设备,用于存储分别以第一图样字开始的图样串;以及第二存储设备,用于存储以第一图样字开始的图样串的第一图样字和相应的图样长度的组合。该系统还包括:搜索引擎,用于在文本中迭代地识别与所述第一图样字之一相匹配的字以设置为当前字;提取器,用于迭代地提取以所述当前字开始并具有与图样长度之一相等的子串长度的子串;以及比较器,用于迭代地将所述子串与具有与该子串的第一图样字和长度相同的第一图样字和串长度的每个图样串相比较。该系统还可以包括第三存储设备,用于在该子串与图样串之一相匹配的情况下存储与该子串相关的?目息。[0006]根据本申请的另一方面,提供了一种用于通过使用一个或多个处理器执行驻留在计算机中的指令来从文本中搜索多个串的方法。该方法包括:将分别以第一图样字开始的图样串存储在第一存储设备中;并将分别以第一图样字开始的图样串的第一图样字和相应的图样长度的组合存储在第二存储设备中。该方法还包括:利用搜索引擎在文本中迭代地识别与所述第一图样字之一相匹配的字,以设置为当前字;利用搜索引擎迭代地提取以所述当前字开始并具有与图样长度之一相等的子串长度的子串;利用搜索引擎迭代地将该子串与具有与该子串的第一图样字和长度相同的第一图样字和串长度的每个图样串相比较;以及如果该子串与图样串之一相匹配,则将与该子串相关的信息存储在第三存储设备中。[0007]本申请的系统和方法可以在文本中高效地找到和定位一系列以使用大字符集(charset)的语言(例如中文)书写的预先定义的图样串(例如中文词)。本申请所采用的技术考虑使用大字符集的语言的特性,并且可以获得线性的运行时间并减少搜索时间。该技术可被例如用于在公告板系统(BBS)线程中禁止包含一个或多个预先定义的图样字的文本。【专利附图】【附图说明】[0008]在附图中以示例的方式而非限制的方式图示出本发明的实施例,附图中的相似标号指示相似元件,在附图中:[0009]图1是图示出根据示例性实施例的用于从文本中搜索多个目标图样串(targetpatternstring)的系统的框图;[0010]图2是图示出根据示例性实施例的用于从文本中搜索多个目标图样串的方法的流程图;以及[0011]图3是以计算机系统的示例性形式图示出根据示例性实施例的机器的框图。【具体实施方式】[0012]用于从文本中搜索多个目标图样串的系统和方法将被描述。在以下描述中,为了说明而提出多个具体细节,以便对本发明提供全面理解。但是,本领域技术人员应该明了,本发明无需这些具体细节也能够被实施。[0013]在很多情形中,人们可以尝试搜索数字文档来找到和定位某些特定内容。例如,某些父母或权威机构可以尝试搜索对孩子们开放的数字文件,以确定在数字文件中是否有以使用大字符集的亚洲语言(例如,中文)书写的有害内容。这些有害内容可以是不适合孩子的多个预定目标图样串(例如中文词或字),例如“色情”、“色情网”、“色情图片”、“暴力”和“暴力电视剧”等等。每个目标图样串(例如“色情网”)具有一第一字(例如“色”)和一图样串长度(例如3)。[0014]图1是图示出根据示例性实施例的用于从文本中搜索多个目标图样串的系统100的框图。在某些实施例中,系统100可以包括第一存储设备10、第二存储设备20、第三存储设备30和搜索引擎40。系统100还可以包括一个或多个处理器50,用于执行保留在计算机中的指令来操作其他组件。[0015]在某些实施例中,第一存储设备10可以存储预先定义的目标图样串(例如,“色情”、“色情网”、“色情图片”、“暴力”和“暴力电视剧”),这些目标图样串各自具有第一字(例如,“色”或“暴”)及其图样串长度(例如,2、3、4或5)。第一存储设备10可以包括一HashSet(散列集合)。该HashSet是Set(集合)接口的具体实现方式。它创建使用散列表的聚集(collect1n)以用于存储。散列表通过使用被称为散列化(hashing)的机制来存储信息。在某些实施例中,系统100还可以包括用户接口60,其可以用来接收将被存储在第一存储设备10中的目标图样串。[0016]在某些实施例中,第二存储设备20可以存储目标图样串(例如,“色情”、“色情网”、“色情剧”、“色情图片”、“暴力”和“暴力电视剧”)的第一字(例如,“色”或“暴”)和图样串长度(例如,2、3、4或5)的唯一组合(例如,〈“色”,(2,3,4)>和〈“暴”,(2,5)>)。以第一图样字(例如“色”)开始的图样串(例如,“色情”、“色情网”、“色情剧”、“色情图片”)的第一图样字与图样长度(例如,2、3、3、4)的组合(例如〈“色”,(2,3,4)?是不重复的。第二存储设备20可以包括至少一个HashMap(散列图)。HashMap指一种数据结构,其使用散列函数来将某些标识符或关键字(key)高效地映射到关联的值(例如,它们的电话号码)。散列函数用来将关键字转换成将从中寻找相应值的阵列元素(槽(slot)或桶(bucket))的索引。[0017]在某些实施例中,搜索引擎40可以从文本开头迭代地识别与第一图样字之一(例如“色”)相匹配的字,并将该匹配字设置为文本中的当前字。[0018]在某些实施例中,搜索引擎40可以迭代地提取以当前字(例如“色”)开始并具有等于目标图样串长度之一(例如2)的子串长度的子串。[0019]在某些实施例中,搜索引擎40可以迭代地将该子串与具有分别与该子串的第一字和串长度相同的第一图样字(例如“色”)和串长度(例如2)的每个目标图样串(例如“色情”)相比较。如果提取出的子串与目标图样串之一(例如“色情”)相匹配,与该子串相关的信息则可以被存储在第三存储设备30中。与该子串相关的信息可以包括该子串的位置。[0020]这一过程一直前进到到达文本结尾。在某些实施例中,定位到的字串被加亮以警示用户。在某些实施例中,系统100可以包括显示器70,用来显示与存储在第三存储设备30中的子串相关的信息。[0021]系统100可以在文本中高效地找到和定位与预先定义的目标图样串中的一个或多个相匹配的子串,以减少搜索时间。[0022]图2是图示出根据示例性实施例的用于从文本中搜索多个目标图样串的方法200的流程图。[0023]在某些实施例中,在操作202处,将多个目标图样串(例如,“色情”、“色情网”、“色情剧”、“色情图片”、“暴力”和“暴力电视剧”)分别存储在第一存储设备10中。这些目标图样串分别以第一图样字(例如“色”或“暴”)开始。[0024]在操作204处,将以第一图样字(例如“色”或“暴”)开始的目标图样串(例如,“色情”、“色情网”、“色情剧”、“色情图片”、“暴力”和“暴力电视剧”)的第一图样字(例如“色”或“暴”)和相应图样长度(例如2、3、4或5)的唯一组合(例如,〈“色”,2,3,4>)和<“暴”,2,5>存储在第二存储设备20中。[0025]在操作206处,利用搜索引擎40来在文本中迭代地识别与第一图样字之一(例如“色”)相匹配的字,以设置为当前字。[0026]在操作208处,利用搜索引擎40迭代地提取以当前字(例如“色”)开始并具有与目标图样串长度之一(例如2)相等的子串长度的子串。[0027]在操作210处,利用搜索引擎40迭代地将该子串与具有分别与该子串的第一图样字和子串长度相同的第一图样字(例如“色”)和目标串长度(例如2)的每个目标图样串(例如“色情”)相比较。[0028]如果该子串与目标图样串之一(例如“色情”)匹配,则在操作212处,将与该子串相关的信息存储在第三存储设备30中。与该子串相关的信息可以包括该子串的位置。操作206到212被重复,直到到达文本的结尾。[0029]在操作214处,利用显示器70来显示与存储在第三存储设备30中的所有子串相关的信息。[0030]实施例的操作可以分两个阶段来执行:初始化和处理。在初始化阶段,目标图样词(被搜索的词)被放入HashSet中,并且每个目标图样词的第一字和长度被放入HashMap中。由于JAVA中的HashMap不允许重复的关键字,因此第一字相同的图样词的不同长度被放入HashMap。[0031]在处理阶段,文本从开头起被迭代处理。文本的每个字都被检查。如果在HashMap中找到当前字,则可能当前位置的子串是图样词。从HashMap获得可能的长度,并针对每个可能长度,提取出根据当前长度的子串,以检查其是否在HashSet中。如果获得命中,则在文本中找到目标图样词,开始位置是当前位置并且长度是当前长度。否则,过程前进到下一可能长度。如果所有可能长度都已被处理,过程则前进到文本的下一字。[0032]假设文本长度为M,并且存在N个目标图样串。在初始化阶段所需时间为A*N,其中A是包括用于将词存储到HashSet中、提取出子串的第一字并且将字和长度存储到HashMap中的时间的常数。处理阶段所需时间为B*M,其中B是包括用于在HashMap中查找字、在发现命中的情况下提取出子串以及在HashSet中查找该子串的时间的常数。该算法的总时间复杂度是(A*N+B*M)的函数。图3是以计算机系统300的示例性形式图示出一机器的框图,在该计算机系统300中可以执行用于致使机器执行这里讨论的方法中的任意一种方法的指令序列的集合。在替换实施例中,该机器可以是服务器计算机、客户端计算机、个人计算机(PC)、tabletPC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络工具、网络路由器、交换机或网桥,或能够执行指定将由该机器采取的动作的指令集合的任意机器。此外,虽然只有单个机器被示出,但是术语“机器”也可以包括多个机器的任意聚集,这些机器单独地或联合地执行指令集合来执行这里论述的方法中的任意一种或多种方法。[0033]示例性计算机系统300包括处理器302(例如中央处理单元(CPU)、图形处理单元(GPU)或其两者)、主存储器304和静态存储器306,它们经由总线308彼此通信。计算机系统300还可以包括视频显示单元310(例如液晶显示器(IXD)或阴极射线管(CRT))。计算机系统300还包括字母数字输入设备312(例如键盘)、光标控制设备314(例如鼠标)、盘驱动单元316、信号生成设备328(例如扬声器)和网络接口设备320。[0034]盘驱动单元316包括机器可读介质322,其上存储了体现这里描述的方法或功能中的任意一种或多种的一个或多个指令集合(例如软件324)。软件324在被计算机系统300执行期间还可以完全或至少部分驻留在主存储器304和/或处理器320中,主存储器304和处理器320也构成机器可读介质。[0035]软件324还可以经由网络接口设备320被在网络326上发送或接收。虽然机器可读介质322在示例性实施例中被示出为单个介质,但是术语“机器可读介质”应该被认为包括存储一个或多个指令集合的单个介质或多个介质(例如,集中式或分布式数据库和/或关联的缓存和服务器)。术语“机器可读介质”还将被认为包括能够存储、编码或承载如下指令集合的任意介质,所述指令集合被机器执行并致使机器执行本发明的实施例的方法或操作中的任意一种或多种。术语“机器可读介质”因此将被认为包括(但不局限于)固态存储器、光和磁介质以及载波信号。[0036]因此,从文本搜索多个目标图样串的方法和系统已被描述。虽然本发明已经参考具体的示例性实施例进行了描述,但是将会明了,在不脱离本发明的更宽精神和范围的情况下可以对这些实施例作出各种修改和改变。因此,说明书和附图将被视为示例性的而非限制性的。【权利要求】1.一种用于在文本中搜索字串的方法,该方法包括:存储分别以第一字开始的图样串;对于每个不同的第一字,存储该第一字和以该第一字开始的图样串的每个不同串长度的组合;在文本中识别与第一图样字之一相匹配的字;迭代地基于以识别出的字开始的串从文本中提取串,并将与串长度之一相等的串长度与匹配的第一字一起存储;迭代地将每个提取出的串和具有与该子串相同的第一字和串长度的每个图样串相比较;以及基于该比较确定至少一个提取出的串与所述图样串之一匹配。2.如权利要求1所述的方法,还包括从用户界面接收所述图样串。3.如权利要求1所述的方法,还包括在显示器上显示与至少一个提取出的子串相关的信息。4.如权利要求1所述的方法,其中,所述图样串被存储为至少一个HashSet。5.如权利要求4所述的方法,其中,所述组合被存储为至少一个HashMap。6.如权利要求3所述的方法,其中,与至少一个提取出的子串相关的信息包括该子串在文本中的位置。7.如权利要求1所述的方法,其中,在文本中将至少一个提取出的子串高亮示出。8.一种用于在文本中搜索字串的系统,该系统包括:用于存储分别以第一字开始的图样串的装置;用于对于每个不同的第一字存储该第一字和以该第一字开始的图样串的每个不同串长度的组合的装置;用于在文本中识别与第一图样字之一相匹配的字的装置;用于迭代地基于以识别出的字开始的串从文本中提取串并将与串长度之一相等的串长度与匹配的第一字一起存储的装置;用于迭代地将每个提取出的串和具有与该子串相同的第一字和串长度的每个图样串相比较的装置;以及用于基于该比较确定至少一个提取出的串与所述图样串之一匹配的装置。9.如权利要求8所述的系统,还包括用于从用户界面接收所述图样串的装置。10.如权利要求8所述的系统,还包括用于上显示与至少一个提取出的子串相关的信息的装置。11.如权利要求9所述的系统,其中,与至少一个提取出的子串相关的信息包括该子串在文本中的位置。12.如权利要求8所述的系统,其中,用于存储图样串的装置包括至少一个HashSet。13.如权利要求12所述的系统,其中,用于存储所述组合的装置包括至少一个HashMap014.如权利要求8所述的系统,还包括用于在文本中将至少一个提取出的子串高亮示出的装置。【文档编号】G06F17/30GK104484381SQ201410757944【公开日】2015年4月1日申请日期:2010年2月26日优先权日:2010年2月26日【发明者】张林申请人:电子湾有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1