专利名称:单词表和其它文本的有效存储和检索的利记博彩app
单词表和其它文本的有效存储和检索
版权声明
本专利文献公开内容的一部分包含受到版权保护的内容。该版权所有者不 反对因该专利文献或专利公开出现在美国专利商标局的专利文档或记录本中 而被任何人影印复制,但除此以外则保留全部版权权利。
背景技术:
1、 发明领域
本发明涉及文本存储和检索系统。尤其是,本发明涉及在虚拟表格中的文 本存储,其采用新颖的设置来帮助加快检索。本发明其它方面包括相关方法、 装置、逻辑电路图、计算机程序产品等等。
2、 相关技术的描述
在当今数字时代,数字化存储数据无所不在。数字数据被保存在易失性和 非易失性设备里,例如硬盘、记忆棒、软盘、集成电路、磁带、光盘等。
随着手持设备的广泛流行,以紧凑格式储存数据也变得日益重要。由于技 术进歩的不断出现,物理设备本身在尺寸上年年縮小。并且,除了物理设备的 设计以外,已经不断出现了一系列提供不同类型数据压縮的软件算法。即使在 数据大小并不至关重要的应用程序中,数据压縮仍然提供了好处,因为相同大 小的存储设备可以容纳更多数据。
除存储大小以外,消费者还要求最大存储速度。因此,数据存储设备在它 们的运行转速方面一直定期的提高。并且,除了物理设备的设计以外,已经有 许多设法采用有助于更快检索和读取的方式来更有效地定位被存储的数据和 存储该数据的软件算法。
但消费者仍然得不到满足,而要求比以前更快和更紧凑的数字数据存储。 尽管过去进步显著,并且某些产品在商业上获得广泛成功,但仍有持续不断的 研究以改善数字数据存储的大小和速度。从这方面来看,似乎总出现新的问题,并且已知的数字数据存储技术从不能完全适合所有消费者的需要。 发明概述
本公开内容的一个方面包括计算机可读存储介质,所述计算机可读存储介 质实际包含被设置为帮助加快检索的机器可读数字数据。该数据包括大量存放 在具有行和列的表格中的单词,每个单词存放在不同的行并且该单词的每个字 母占据那一行的不同列。在一列中每个连续出现的相同字母串形成一个间隔, 单词被以相互之间最大化间隔的长度来定位,和/或通过游程长度编码优化压 縮列的效率。
本公开内容的教导可被落实为一种方法、装置、逻辑电路、信号承载介质 或这些的组合。这一公开提供许多其它优点和益处,它们从下面的描述中可以 显而易见。
图1是文本存储和检索系统的组件和互连的方框图。
图2是数字数据处理器的方框图。
图3示出示例性的信号承载介质。
图4是示例性逻辑电路的透视图。
图5是存储单词来帮助加快检索的程序流程图。
图6是指导对按图5所存储的单词加快检索的程序流程图。
图7是单词存储表的例子。
图8是压縮的单词存储表的例子。
详细说明
结合附图,考虑以下详细说明之后,本发明的本质,目的和优点对本领域 技术人员将变得更显而易见。
硬件组件和互连 整体结构
本发明公开内容的一方面涉及一个文本存储和检索系统。 一个例子是图1的系统100。该系统IOO包括用户界面102、管理器106、和数据存储110。用 户界面102包括把来自人类的生物统计的输入转换成机器可读信号和反过来 将机器可读信号转换成人类的生物统计的输入的装置。对于用户输入,界面 102可包括完整或简化的按键键盘、软键盘、数字化表面、指点设备、语音识 别系统、视线跟踪系统等等。对于向用户的机器输出,界面102的一些例子包 括LCD视频显示、扬声器、LED矩阵、等离子体显示,CRT等等。此外,界 面102可由任何适合于本文所述功能的技术来实现。
管理器106根据从界面102接收的用户数据和命令执行多种任务。下面更 详细地描述管理器106的具体任务。管理器106可通过一个或多个硬件设备、 软件模块、或者两者的组合等来实现。 一些具体的例子在下面结合图2-4被论 述。
数据存储IIO在管理器106的指导下储存数据。数据存储110可通过诸如 在下面结合图3-4所描述的那些硬件设备而实现。存储110包含表格118,该 存储IIO包含被设置为帮助加快检索的机器可读数字数据,如在下面更详细地 说明。如下面所论述,表格118将单词存储在多个行和列中。每个单词占据不 同的行。单词的每个字母占据那行的不同列。当然,机器可读的数字数据存储 的本质是从不存在任何实际的"表格"。如在下面进一步详细论述,数据被按地 址存储并且以映射为表格的逻辑结构被设置,如下面更详细地描述。为强调这 点,表格118也可被称作虚拟表格、虚拟矩阵、逻辑表、逻辑矩阵等等。
应用程序120包括由管理器106执行的软件或固件程序。 一些例子包括字 处理、联系簿、电子邮件、即时通信、用户输入文本的歧义消除、日程管理或 用户希望的任何其它程序。作为一个具体例子,应用程序120可以包括丁9@牌 单词歧义消除技术。T9技术在多种专利中被描述,例如美国专利号5818437、 5953541和6011554。上述文献通过引用整体引入本文。或者,任何应用程序 120可以电路或其它形式实现,例如下面在图2-4的上下文中论述的那些例子。
示例性数字数据处理装置
如上述,数据处理实体(例如管理器106)可以多种形式实现。 一些例子 包括通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编 程门阵列(FPGA)或其它可编程逻辑设备、分立门或晶体管逻辑、分立硬件组件,或它们被设计成执行本文所述功能的任何组合。通用处理器可能是微处 理器,但是作为替换,处理器可能是任何传统的处理器、控制器、微控制器或
状态机。处理器也可以被实现为计算设备的组合,例如DSP和微处理器的组 合、多个微处理器、 一个或多个微处理器结合DSP核心、或任何其它这种结 构。
作为更具体的例子,图2示出数字数据处理装置200。装置200包括与存 储器204相连的处理器202,例如微处理器、个人电脑、工作站、控制器、微 控制器、状态机或其它处理器。在当前例子中,存储器204包括快速访问存储 器206和非易失存储器208。例如,该快速访问存储器206可以被用于储存由 处理器202执行的编程指令。存储器206和208可通过多种设备来实现,例如 结合图3和4更详细地论述的那些。许多选择是可能的。例如,组件206, 208 之一可以被除去;此外,存储器204, 206和/或208可被设置在处理器202插 件板上,甚至设在装置200的外部。
装置200还包括输入/输出210,例如连接器、线、公共总线、电缆、缓 冲器、电磁链接、网络、调制解调器、或用于处理器202与装置200外部的其 它硬件交换数据的其它装置。
信号承载介质
如上述,多种数字数据存储的情况可被使用,例如,以提供存储100(图 1),以包含存储204和208 (图2),等等。根据它的应用,该数字数据存储可 被用于多种功能,例如储存数据,或存储机器可读指令。这些指令本身可对执 行多种处理功能给予帮助,或它们可服务于在计算机上安装软件程序,然后可 在该计算机中执行这种软件程序来进行与本公开内容相关的其它功能。
在任何情况下,信号承载介质可通过几乎任何机制来实现以数字式地存储 机器可读信号。其中一个例子是光存储例如CD-ROM、 WORM、 DVD、数字 光带、磁盘存储器300 (图3)或其它光存储器。另一个例子是直接访问存储 器,例如传统的"硬盘驱动"、廉价磁盘冗余陈列("RAID")、或另一直接访问 存储器("DASD")。另一个例子是串行的访问存储,例如磁带或光带。数字 数据存储的其它例子包括电子存储器例如ROM、 EPROM、闪速PROM、 EEPROM、存储寄存器、电池备份RAM等等。示例性存储介质与处理器相连,所以处理器可以从存储介质读取信息和写 入信息到存储介质。在备选方案中,存储介质可集成到处理器。在另一例子中,
处理器和存储介质可放在ASIC或其它集成电路中。 逻辑电路图
相比于包含机器可执行指令的信号承载介质(如上所述), 一个不同的实 施方式使用逻辑电路图来实现处理特征,例如管理器106。
根据在速度、费用、加工成本等方面的应用特定的需求,这个逻辑电路图 可通过构造具有数以千计的微小集成晶体管的专用集成电路(ASIC)来实现。这 样一种AS1C可用CMOS、 TTL、 VLSI或其它合适的结构来实现。其它的选择 包括数字信号处理芯片(DSP)、离散电路图(例如电阻器、电容器、二极管、 感应器和晶体管)、现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、可编 程逻辑设备(PLD)等等。
图4示出以集成电路400这种形式的逻辑电路图的例子。
操作
描述过本公开内容的结构特征后,现在将被描述本公开内容的操作方面。 结合本文所公开的实施方式而描述的任何方法、过程、或算法的步骤可直接体 现在硬件中、体现在通过硬件执行的软件模块中,或体现在两者的组合。
存储单词
图5图示本公开内容在方法方面的一个例子。概括地说,程序500演示了 一个新过程,所述过程存储被配置成帮助加快检索的单词表。为了便于说明, 但是并不意味着任何限制,在图1的系统100的特定上下文中讨论程序500。
当系统100被初始化、被安装、被制造、被启动、被激活或其它适当的场 合时,可执行程序500。在步骤502中,管理器106接收一组待输入到表格118 里的单词。这一单词集合被称作初始簿或一个"源列表"。该初始簿通过技术 人员的手工输入、随系统100安装、从远程站点下载、从数据存储110中存档 的或备份(setup)设备中读取等等到达管理器106。
在步骤503,管理器106建立表格118。该表格包含许多行和列。建成后,表格118将在不同的行存储每个单词并且该单词的每个字母占据那一行的不 同列。当然,机器可读数字数据存储的本质是事实上不存在任何实际的表格。 相反,数据被按地址存储并且以映射为表格的逻辑结构被设置。尽管在步骤 503没有任何单词,但该表格被称作"靶列表"或"靶单词表"。
以下例子定义了每行一个单词的例子。这里,步骤503将表格定义为包括 至少和源列表中的单词数一样多的行,以及至少和最长单词的字母数一样多的 列。在一个更具体的例子中(未示出),为了在最长的单词之后指定一个"空" 字符,该表格可包括和最长单词的字母数加上1后一样多的列。这在检索该表 格时被使用,如在后面更更详细地论述。
在步骤503之后,管理器106从源列表中一个接一个的输入单词到最初的 空表格118。也就是,在步骤504,该管理器106将源列表中的每个单词与靶 列表(表格118)中底部的(最后的)单词进行比较。在步骤506,管理器106 将来自源列表的最大相似度的单词(通过比较504找到)存储到靶列表的底部, 并且可选择地,从该源列表中除去这个单词。步骤504和506不断的重复使得 源列表中的所有单词都被处理(506),或单词被从源列表中一个接一个的除去, 直到步骤508发现在该源列表中不再有单词剩余。
在一个具体的例子中,步骤504工作如下。当比较两个单词时,步骤504 做逐字母比较,对每个匹配的字母奖励一分。例如,比较"ptarmigan "和"search" 得到两分。比较"caribou"和"cartoon"得到四分。比较"ptarmigan"和"ptarmigans" 得到九分。在步骤504比较在源列表中每个单词和靶列表底部的单词之后,步 骤506在表格的底部存储最大相似度的源列表单词。如果源列表的两个单词之 间存在联系(与靶列表的最后一个单词比较时都有相同的分数),那么任务506 使用第一次出现在源列表中的单词。如果步骤506发现当前单词已经在表格 118中,那么当前的单词被丢弃。
然后,步骤504和506具有按照相似度顺序来分选源列表的单词的作用。 在这种意义上讲,相似性被宽松地定义为在单词中相同符号位置的数目。在步 骤506之后,步骤508询问是否存在任何来自源列表的剩余单词需要处理并加 到表格118中。如果是,那么下一个单词变成当前的单词,并且重复上面所论 述的步骤504, 506。
上述仅仅是一个例子。除了基于最佳匹配一个接一个地选取单词,任务504-506可采用多种不同比较方案中的任何一个。它们中的许多对于本领域技 术人员来说是显而易见的,有利于本公开内容。此外,该比较方案可包括特别 被设计为以最有助于被步骤510 (如下所述)压縮的方式来指示(order)靶列
表中的单词的其它特征。
可选择地,当步骤508发现来自初始簿的所有单词已经被处理,步骤510 压縮表格118。在一个例子中,压縮使用游程长度编码来分别地压縮表格的每 列。下面描述一个详细的例子。
在步骤512,管理器106分析已完成的(并且可选择地被压縮的)表格118, 并且格式化该表格。歩骤512可例如增加表头信息和/或其它元数据。在一个 特定的例子中,步骤512计算已完成的表格的每列中的间隔数并且在表格元数 据中存储该计数。此外,步骤512可根据它们包含多少间隔将列分级,并且将 这一信息放在表格元数据中。另外,步骤512可分析该已完成的表格118以标 识该表格中定位了某些长度的单词的最后一行。例如步骤512可准备一个列 表,该列表的行包含最后的一个字母的单词,最后的两个字母的单词,等等。 这个信息被存储在表格元数据中。
修改
程序500可以多种方式修改,其中一些在下面论述。在当前的例子中,表 格118—旦被构建就是静态的。也就是说,新单词不能被加到表格118中。这 有助于保护处理成果,因为当增加一个新单词时,重复操作500是很费时间的。 在这个例子中,操作500表示编辑表格118的一次动作。在一个不同的例子中, 表格118允许随时加入新单词。例如,该新单词可与表中存在的单词对比,并 且最接近最大相似度单词放置。
在一个完全不同的例子中,可修改程序500以结合频繁使用的单词的有限 子集。在这个例子中,在第一次进行步骤504, 506之前,将最频繁使用的单 词的有序表从源列表移动到靶列表。然后,正常地实施操作504-510。因为对 来自源列表的新单词进行了比较并且将其加入到表的末尾,因此这在表格的顶 部保存频繁使用的单词的内容和顺序。这些单词可以是在通常使用、用户输入 的单词、被指定用户最常用的单词等等中最频繁出现的单词。在一个例子中, 这些最频繁使用的单词可包括表格118中的单词的大约5%。或者,管理器106可使用和表格118分离的物理或逻辑位置来分别维持一列a list of频繁输入的 单词用户输入的单词等等。
已完成的表格118
图7示出已完成的表格118的例子700。该表格700的行通过字符的横线 显示,列由702-709示出。在这个例子中,表格700最长容纳九个字母的单词。
虽然"字母"无疑可以指字母表的字母,但这个公开内容不应该被过度地局 限于这样一个例子。字母还可包括那些用来一起形成可识别的字符组(例如单 词)的标点符号、数字、和其它符号。
因此,在表格118中的每个单词占据不同的行。每个单词的每个字母占据 那一行的不同列。每个单词的第一字母出现在列702。在一列中的相同字母串 形成"间隔"。间隔的一个例子是712,该处中字母"t"连续出现了六次。另一个 间隔是716,该处中字母"h"连续出现了十三次。另一个间隔是718,该处中"i" 连续出现了四次。表格700还包含空白或"空"间隔,例如714和715。可选择地,每行被指定一个行数或地址。行地址(721-737)通过718表 示。指定行地址帮助加速表格700的检索,如在下面详细地论述。
组织步骤504, 506自然结果是表格700中的单词被设置成使间隔的长度 最大化。如在下面所论述,较长间隔加速了检索表格700的过程。
压縮表
如上所参考(步骤510),表格118可被压縮。在这个例子中,压縮使用 游程长度编码来分别编码表格的每列。此外,可丢弃原始表700而使用压縮表 800全部进行将来的检索。这在下面更详细地论述。
图8示出一个压縮表800的例子。这里,表格800表示通过步骤510来压 縮表格700的结果。尤其是,表格800表示一系列数据流802-809,每个对应 于列702—709中的一个。在数据流802中,例如,编码"2c 2w ls 6t 4c lg lb" 表示"c"出现2次,"W"出现2次,"S"出现1次,"t"出现6次,"c"出现4次, "g"出现1次和"b"出现1次。任何数字后没有跟字母的数据流(例如在数据流 808中"3"),表示"空"出现的次数。
尽管未示出,但地址718也可被结合在表格802-809中。虽然在分别的行中显示数据流802-809,但这仅仅是为了举例。通过结合诸如812的结束标志, 可将数据流802-809保存在一个连续流中。
扩展最简化的例子800,附录A示出表示表格700的压縮表达式的更详细 的数据流列表。在这个例子中,压縮方案包括计算每对符号/长度出现次数的 总数,然后选取前255对用于一字节编码。在这种情况下,这产生大约95% 的间隔覆盖。其他的都使用最后一个字节值被编码作为"换码","换码"后跟随 更直接的信息编码(导致间隔3字节)。可以的时候,将大量换码间隔编码为 两个1字节间隔以节省空间。跳转信息(在下面描述)在间隔数据流中也被编 码为换码数据。
接下来继续解释压縮表800的具体的示例性实施。为了帮助优化(使得数 据库方案的字母表更独立)在数据库中发现的符号,词汇表被编码作为单字节 码。由一小组实体建立间隔数据流。数据流是这种实体的序列。 一字节间隔是 目前为止最常用的实体,而其余的使用换码值加上内容来编码。255个最常用 的符号和长度的组合/对被编码为一字节码。数据库表头包括将这些值解码为 符号和长度的表。当可以用两个1字节码代替直接间隔时,将这样做以节省换 码的空间。可使用换码,符号码和长度以3字节直接编码低频率间隔。因此最 大间隔长度是255。为了编码较长间隔,增加了扩展(extension)。
在读取直接间隔之后,必须检查数据流以看看其后是否跟随扩展和被该扩 展所修改。在下面的例子中,FF是换码信息,IO是符号码,而6是该间隔长 度。FF-10-06表示INTERVAL codel6, chart, length 6。
一个直接间隔后面可以跟随扩展码,该扩展码使用换码、扩展码和长度被 编码为另一3字节。该长度变成了前一间隔的较高位字节。由于这个扩展,最 大间隔长度变成65535。在下面的例子中,FF是换码信息,0C是用于"扩展" 的符号码和33是被加入到前一间隔的长度的高位字节长度值。 FF-10-06INTERVAL codel6, chart, length 6 FF陽0C陽33EXTEND high byte length 33 , actual length 13062 。
使用换码、跳转码、2字节相关的单词位置和2字节相关的流位置,将跳 转信息编码为6字节。通过加上来自发现跳转信息处的当前的绝对值,使相对 值变成绝对值。在下面例子中,FF是换码信息,OB是用于"跳转"的符号码, 00是用于位置的高位字节,05是用于位置的低位字节,OO是用于字节的高位字节和09是用于字节的低位字节。
FF-OB-00-05-00-09 JUMP5 relative positions, 9relative
bytes 。
使用换码和结束码将结束信息编码为2字节。在下面例子中,FF是换码 信息和0D是用于"结束"的符号码。 FF - 0D END
跳转码
在数据流里的信息是不同长度的"相对"间隔,因为在每个间隔里找到的 信息是字符加长度,而不是绝对位置。因此,在一个例子中,从一个给定间隔 开始,不可能知道从数据流中哪里查找单词位置(即,表格行)或找到某一间 隔。因此,跳过向前的唯一方法是读取并解释数据流中的每个间隔,直到发现 包含靶地址的间隔。
因此,为了加快这个过程,压縮表800还可包括许多"跳转码"。如下面 所论述的,这有助于加速对表格800的检索。跳转码帮助表明由数据流所表示 的单词位置(二表格行)和它们在数据流里的实际位置(=地址)之间的关系。 例如,跳转码可表示在数据流里必须跳过多少字节以便提高给定的单词位置 数。作为一个特定的例子,在数据流802里立即出现的跳转码可表示为了跳过 开头的4个单词位置(即,在表格列里向下前进的4个字母),需要改进给定 的字节数。例如,这将有助于将指针从列702中的第一个"c"之前移动到该 列中最后一个"W"之后,以便将该指针设置到第一个"S"。
跳转信息可包括,例如,像这样的信息在列表里向前走500个单词位置, 走到数据流里这一特定位置(地址)。在一个例子里,跳转码位于在数据流里 某些已知位置并且实际上指向彼此,产生跳转信息阶梯。因为跳转信息在它能 被使用之前已经存在于数据流中,它可在任何时间使用,直到遇到下一个跳转 码。因此,当向前移动时,可以在任何时候使用已知信息。 一旦靶单词位置到 达或者超过该已知位置,就不再需要仔细査看任何间隔。
在一个特定实施中,可按大约每100个间隔放置跳转码。根据间隔的实际 长度,跳转码可以覆盖不同的单词位置的跨度。这有助于跳、过间隔,而不是在 绝对列表中跳转某一距离。检索
图6显示了本公开内容的另一个方法方面的例子。广义地,程序600演示 了一个通过表格118 (没有压縮的表格700或压縮的表格800)进行加速检索 的新过程。因为该过程使用游程长度间隔来跳过那些已知不匹配的单词,所以 对单词的检索被加速。只要游程长度间隔不匹配,该间隔的整个长度就可以被 跳过。
为了易于解释,但并非旨在任何限定,在图1的系统100,图7-8的表格 700和800的特定上下文中讨论程序600。在步骤602,管理器106接收输入 单词,或者"检索单词"。剩下的操作是在表格118中检索该检索单词。如下 面所论述的,这些操作也可被执行用来检索多次出现的检索单词的一部分。接 下来的例子是以"churches"为检索单词。
许多理由可以导致步骤602发生。在一个例子中,应用程序120之一是用 户输入消歧程序,例如前面提到的19@技术。继续使用这个例子,当用户输入 具有固有歧义的键盘组合,例如键盘数字"2-8"时,接收到检索单词(602)。 由于字母"A-B-C"映射数字"2",而"T-U-V"映射键盘数字"8",这一用 户输入的键盘组合可表示下列组合中的任一个AT、 AU、 AB、 BT、 BU、 BV、 CT、 CU或CV。在这个例子中,T9应用程序120将这些单词单独地传送给另 一个应用程序120(即,过程600)。当每个这样的单词被接收时,这就组成了 在这个例子中的步骤602。T9应用程序通过程序600合并及处理匹配的单词输 出,并将他们作为一组用户想要的可能候选者输出给用户。
当然,除上述例子之外,也可有其它调用过程600的情形。例如,过程 600可以被用作拼写检査。
在步骤602之后,步骤603配置若干虚拟指针(未示出),其基本上包括 光标、占位符、或用于保持追踪经由表格700的每列前进的其它工具。在这例 子中,702-709每列都有一个指针。每个指针用于追踪当前表中对于那一列的 行。步骤603设置每个指针指向第一个行721的对应字母。在表格700的例子 中,指针单独地指向"chimney"的字母。
在设置步骤603之后,歩骤604考虑"第一"指针,将其作为考虑中的"当 前"指针。在简单的情况下,第一指针是最左边的指针,并通过每次向右移动一个指针而比较随后的字母(609)。和简单的情况相比,步骤604可仔细地选 择指针前进的顺序来优化检索速度。这里,步骤603必须预先査看过表格元数 据,这在前面结合歩骤512进行了说明。尤其是,步骤603考虑检索单词的长 度(也就是所占据的列数),并且査看表格元数据来査找在该检索单词的每列 中中出现的间隔数。然后歩骤604按照从最小间隔的列移动到最大间隔的列建 立指针前进。
下面的例子使用简单的情况,其中指针从左至右移动前进。然后歩骤606 询问在第一指针的字母(也就是,第一个字母)是否匹配检索单词"churches" 的第一个字母。在这个情况下,回答是,所以步骤606前进到步骤608。步骤 608询问歩骤606是否己经循环得到全部指针的字母匹配检索单词。
在这个当前例子中,步骤608的回答是"否",因为步骤606仅检査了第 一个指针的字母。歩骤608采取特定的手段来保证检索单词精确匹配来自表格 的单词。例如,防止"chimney"匹配"chimneys"。也就是说,即使全部指针 已经显示有匹配之后,步骤608也必须保持运行以另外检验在表格当前行(以 前的字母匹配检索单词)中的下一个字母是空白,空的,或空。
在目前例子中,步骤608回答"否"并且继续进行步骤609。步骤609推 进到第二个指针,使它为"当前的"指针。如上所述,可使用除了从左到右以 外的多种其它不同的前进。一个例子是其中指针前进从具有最小间隔的列移动 到具有最大间隔的列。
作为步骤609的一部分,现在当前的指针必须被移动到表格的当前行。作 为替换,在较高处理成本下,当进行步骤604, 614,和/或617中适当的一个 时,全部指针可被移到当前行。为了在步骤609中将当前指针移动到表格的当 前行,指针被向下推进,直到其达到被使用的指针行在步骤606最后的回答 "是"。在一个例子中,步骤609包括逐行推进当前指针,适当时,跳过间隔。
在根据表格800或附录A被压縮了的表格700的例子中,可使用跳转码 来加速当前指针在表格中向下的移动。基本上,当前指针表示当前的单词位置 (=表格行);通过来自步骤606的上次最后运行的指针位置可知目的表格行。 当前的光标可以通过相对跳转被推进而不是在表格800中逐行的推进,其中每 个跳转码表示在表格800中的相对的跳转和得到的地址。因此,如果光标必须 被推进总共223行,这一操作可以使用两个100步的跳转码后跟由间隔和/或单行的23个手工增量的组合。
在步骤609推进到下一指针之后,步骤606询问该指针的字母是否匹配检 索单词的相应字母。在当前的例子中,回答是"是",因为检索单词的第二字 母和当前行的第二字母两个都是"h"。过程600按上述继续直到全部指针的字 母匹配该检索单词(导向歩骤610)或指针的字母不匹配该检索单词(导向步 骤607)。
在一个可替换的实施方式中,例程600还可被配置成找到局部匹配。在这 种情况下,调用例程600的应用程序提供最小的匹配字符数,例如开头的3 个字符。然后,除了指针在检索单词中从左至右前进移动(步骤609),例程按 上述来执行,并且当指定的字符最小限度显示匹配时,满足用于在检索单词和 表格单词之间匹配的标准(歩骤608)。如下面所讨论,在这个实施方式中继 续例程600直到全部匹配单词在表格被找到(618)或没有这样的单词被找到 (612)。
当歩骤606发现指针的字母不匹配检索单词时,则执行歩骤607。在当前 的例子中,当第三个指针的字母("i")与检索单词的第三字母("u")相比时, 出现这个条件。在步骤607,管理器106询问全部的表格行是否已经通过步骤 606被评估。如果是,这表示例程600没有在表格700中发现检索单词的任何 匹配。
作为替换,表格可包括标识该表格中定位了某些长度的单词的最后一行的 元数据。如上所述,表格元数据可包括一个列表,该列表的行包含最后的单字 母单词,最后的两字母单词,等等。在这个实施方式中,步骤607可采取捷径。 也就是说,如果表格118的剩余行不包括任何与检索单词同样字母数的单词, 那么步骤607可以更早一些回答"是"而不用询问是否全部行已经通过步骤 606被评估。
在任何情况下,当步骤607回答"是",管理器106提供表示没有找到检 索单词的输出(步骤612)。这个输出可以是本文输出、二进制或其它机器可 读的信号等等。管理器106将这个输出提供给起始检索操作600的应用程序 120。
相反,当步骤607发现不是所有行都已经被处理时,那么例程600继续进 行步骤614。也就是,步骤614推进到在出现未匹配的指针列中出现的下一个间隔。在当前的例子中,步骤614意识到,因为第三指针的字母不匹配检索单
词的第三字母,在检索单词和穿过间隔718的行中的单词之间执行更进一步比 较是无效的。所有这些单词包括"i"作为第三个字母,然而检索单词"church" 的第三个字母是"u"。
为了跳过下一个间隔,步骤614在表格中通过在当前间隔中剩余的行数来 向下推进。也就是说,当前指针(在步骤606中出现未匹配的列)被向前移动 直到遇到下一个间隔。在当前的例子中,在间隔718中有4行(在数据流804 中由码"4i"表示),因此步骤614将当前指针向前移动4行。在向前跳过(614) 之后,步骤604重置到第一个指针,使得其成为考虑的"当前"指针,并且将 这个指针移动到当前行。作为替换,步骤604可保持在步骤606中发生未匹配 列的指针作为当前指针,并移动这个指针到当前行。作为再一种选择,步骤 604可设置当前指针到具有最小间隔的列(如上面所确定),并移动这个指针 到当前行。在歩骤604之后,步骤606询问是否第一指针的字母(在这个例子 中)匹配检索单词"churches"的第一个字母。在这种情况下,回答是否, 因为指针的第一个字母现在是"Sherman"的"S",然而检索单词"church" 的第一个字母是"c"。因此,步骤606推进到歩骤607来proceed下一个间隔。
和上面描述的方案相反,在并非所有指针的字母都匹配过检索单词(在 608中的"否")时, 一种不同的情形是的确出现匹配(在60S中的"是")。 这表示已经在表格700中找到检索单词。因此,管理器106提供表示这个事实 的输出(步骤610),例如本文输出、二进制或其它机器可读的信号等等。管 理器106将这个输出提供给起始检索操作600的应用程序120。在步骤610之 后,步骤616询问是否完成检索。例如,如果实施程序600来检索单个单词匹 配,那么歩骤612的回答是"是",并且如618所显示的那样结束该例程。同 样地,如果一个间隔接着一个间隔的前进(606, 608, 614)已经达到表格118 的结尾,步骤616的回答是"是"。
另一方面,在可选择的实施方式中,程序600被用来检索在表格中所有匹 配检索单词的单词(或执行限于匹配单词数、或检索时间或不限于只有一个检 索匹配的其它参数的检索),并且还没有到达表格118的末端,那么步骤616 继续进行步骤617,其推进到表格的下一行。此后,例程600转到上面论述过 的步骤604。因此,例程600按照上述运行,直到最终在表格中找到确切匹配的单词或
者没有找到该单词,或找到需要部分匹配的检索单词的一些而非全部(612), 或找到所有需要部分匹配的检索单词。在程序600上扩展,附录B示出如何 实施附录A的压縮数据流的检索(根据600)以检索单词"churches"的更详 细的列表。
其它实施方式
虽然上述公开显示了一些说明性的实施方式,但在没有脱离如所附权利要 求所定义的本发明范围内,可以进行各种变化和修改,这对本领域技术人员是 显而易见的。因此,公开的实施方式代表被本发明广泛考虑的主题,而本发明 的范围完全可以包括对本领域技术人员显而易见的其它实施方式,而且本发明 的范围不受权利要求以外的任何内容的限定。
与上述实施方式的元件等效,也就是说已知或以后为本领域普通技术人员 所知的所有结构和功能,明确地在这里作为参考引入本文,并且旨在包含在本 发明的权利要求中。此外,设备或方法不需要提出本发明企图解决的每个及所 有问题,因为它将包括在本发明的权利要求中。此外,不管本发明内容中的元 件、组件、或方法步骤是否在权利要求中被明确地讲述,该元件、组件、或方 法步骤并未意图奉献给公众。此处没有权利要求要素要依据35 USC 112第6 段的条款来解释,除非使用"用于......的装置"或在方法权利要求的情况下,
使用措词"用于......的步骤"来明确叙述该要素"。
此外,虽然该发明的元件可以被描述或在权利要求中是单数,但除非明确 地表态,否则涉及到单数元件并不旨在表示"一个并只有一个",而应表示" 一个或多个"。另外,普通技术人员将理解,为了解释和请求保护的目的,必 须以一些具体顺序提出操作程序,但是本发明预计了除这样的特定顺序以外的 多种的变化。
此外,相关领域的普通技术人员将理解使用多种不同的工艺和技术可描述 信息和信号。例如,这里所涉及到任何数据、指令、信息、信号、比特、符号、 以及芯片可通过电压、电流、电磁波、磁场或粒子、光场或粒子、其它物品或 上述的组合来表示。
此外,本领域技术人员可以理解此处所述的任何说明性的逻辑块、模块、电路和处理歩骤可作为电子硬件、计算机软件、或两者的组合来实现。为清楚 地图示这一硬件和软件的互换性,多种说明性的组件、块、模块、电路和歩骤 就其功能性而言功能性已经在上面总体说明。这样的功能是否作为硬件或软件 实现取决于施加于整个系统的特定应用和设计限制。对于每个特定应用,本领 域技术人员可以多种方式实现所述的功能,但是这样的实现结果不应该被解释 为脱离本发明的范围。
提供本公开内容的实施方式的前述说明以使得本领域技术人员制造和使 用本发明。对这些实施方式的多种修改对于本领域技术人员是显而易见的,并 且本文定义的普通原则可被用于其它实施方式而不脱离发明的精神和范围。因 此,本发明不意图被限于此处所示的实施方式,而是与符合在此公开的原理和 新特征的最广泛范围相一致。
权利要求
1、一种存储用来帮助加快检索的机器可读的数字数据方法,包括如下操作建立具有行和列的表格;在该表格中,存储包括大量单词的机器可读的数字数据,每个单词存放在不同的行并且该单词的每个字母占据那一行的不同列,其中在一列中每个相邻的相同字母串形成一个间隔;该存储操作包括在该表格中建立单词的相对位置的动作,这是根据下述之一最大化间隔的长度,通过游程长度编码优化对该列的压缩效率。
2、 如权利要求1所述方法,所述操作进一步地包括对于每一列,通过形成包括该列中的间隔的游程编码来压縮所述表格。
3、 如权利要求2所述方法,所述操作进一步地包括使用包括跳转码的元数据来补充该表格,每个跳转码在该数据流中具有第 一位置,并且指定表格行的特定数量和在该数据流中的第二位置,其中在数据 流中位于第一和第二位置之间的数据表示表格行的特定数量的跨度。
4、 如权利要求1所述方法,所述操作进一步地包括用元数据补充所述表格,所述元数据标识所述表格中在其下的行中未出现 不同字母长度的单词的行。
5、 如权利要求1所述的方法,其中所述在表格中建立单词的相对位置的 动作包括从实质上是空的表格开始,通过执行以下操作,从源列表中添加单词到所 述表格中,所述操作包括确定源列表中的每个单词和所述表格中的最后一个单词之间的相似度,并 且将源列表中具有最大相似度的单词加到表格的最后一个单词的后面;对源列表中的每个单词重复所述确定操作。
6、 如权利要求1所述方法,其中所述字母包括字母字符、数字、符号和标点符号。
7、 一种经以下过程制造的计算机可读的数据产品 建立具有行和列的表格;在该表格中存储包括大量单词的机器可读的数字数据,每个单词存放在不 同的行并且该单词的每个字母占据那一行的不同列,其中在一列中每个相邻的相同字母串形成一个间隔;该存储操作包括在该表格中建立单词的相对位置的动作,这是根据下述之一最大化间隔的长度,通过游程长度编码优化对该列的压縮效率。
8、 一件制品,包括计算机可读存储介质,所述计算机可读存储介质实际包含帮助加快检索的 机器可读的数字数据;该机器可读的数字数据包括-大量的单词,每个单词存放在不同的行并且该单词的每个字母占据那一行 的不同列,其中在一列中每个相邻的相同字母串形成一个间隔;其中在该表格中的单词根据最大化间隔的长度和通过游程长度编码优化对该列的压縮效率 两者之一而相互定位。
9、 一种用于检索机器可读的数字数据本体的方法,所述数字数据包括大 量的单词,每个单词存放在不同的行并且该单词的每个字母占据那一行的不同 列,其中在一列中每个相邻的相同字母串形成一个间隔,所述方法包括接收给定的检索单词;相对于表格中的指定单词本体评估该检索单词,其包括下述操作对于检索单词正在比较的表格中的每个靶单词,比较该检索单词的字母与 该表格中的靶单词的对应列,每次一个字母-,如果第一指定数量的字母不匹配,向前跳过一些行到使得出现不匹配的列在该行开始下一个间隔的行,并且重新开始该比较操作;如果第二指定数量的字母匹配,提供表示匹配成功的输出; 当评估检索单词与表格中指定的单词本体而没有找到匹配时,提供表示匹配失败的输出。
10、 如权利要求9所述方法,其中第一指定数量的字母包括所述检索单词中所有的字母以及所述检索单词 中指定数量的字母中的一种;第二指定数量的字母包括所述检索单词中的任意字母以及所述检索单词 中指定数量的字母中的一种。
11、 如权利要求9所述方法,其中 所述比较操作包括以下操作对于所述检索单词的每个字母建立指针,每个指针标识在表格第一行中相 应的列;比较检索单词的字母与相应指针所指的字母;所述跳过操作包括使每个指针推进到表格中的这样的一行,该行使得出现 不匹配的列在该行开始下一个间隔。
12、 如权利要求11所述方法,所述操作进一步包括计算每一列中存在多少间隔,并且按照其中出现的间 隔确定列由低到高的顺序;其中按照所述顺序从一个指针到另一个指针进行所述比较检索单词的字 母与相应指针所指的字母的操作。
13、 如权利要求ll所述方法,其中所述表格被压縮成数据流,所述数据流对于每一列包括该列中的间隔的游 程编码;所述表格进一步地包括含有跳转码的元数据,每个跳转码具有在所述数据 流中的第一位置,并指定表格行的特定数量和在该数据流中的第二位置,其中 在数据流中位于第一和第二位置之间的数据表示所述表格行的特定数量的跨 度;其中所述跳过操作包括对于每个指针,利用跳转码将指针向前跳过已知数量的表格行,并且随后移动任何另外需要的附加间隔数来到达一个位置,所 述位置对应于表格中所述下一个间隔开始的单词。
14、 如权利要求9所述方法,其中所述表格进一步地包括元数据,所述元数据标识所述表格中在其下的行中 未出现不同字母长度的单词的行。所述操作包括当在一行下面的行中不再有与检索单词的字母长度相同的 单词出现时,结束所述比较操作。
15、 一种实际包括机器可读指令程序的计算机可读存储介质,该程序可被 数字处理装置执行来进行机器可读的数字数据本体的操作,该数字数据包括大 量存放在具有行和列的表格中的单词,每个单词存放在不同的行并且该单词的每个字母占据那一行的不同列,其中在一列中每个相邻的相同字母串形成一个 间隔,所述操作包括接收给定的检索单词;相对于表格中指定的单词本体评估该检索单词,其包括下述操作 对于检索单词正在进行比较的表格中的每个耙单词,比较检索单词的字母与表格中靶单词的对应列,每次一个字母;如果第一指定数量的字母不匹配,向前跳过一些行到使得出现不匹配的列在该行开始下一个间隔的行,并且重新开始该比较操作;如果第二指定数量的字母匹配,提供表示匹配成功的输出; 当评估检索单词与表格中指定的单词本体而没有找到匹配时,提供表示匹配失败的输出。
16、 用于进行机器可读的数字数据本体的检索操作的多个互连电学导电元 件的电路,所述数字数据包括大量存放在具有行和列的表格中的单词,每个单 词存放在不同的行并且该单词的每个字母占据那一行的不同列,其中在一列中 每个相邻的相同字母串形成一个间隔,所述操作包括接收给定的检索单词;相对于表格中指定的单词本体评估该检索单词,其包括下述操作 对于用于正在进行比较检索单词的表格中的每个靶单词,比较检索单词的字母与表格中靶单词的对应列,每次一个字母;如果第一指定数量的字母不匹配,向前跳过一些行到使得出现不匹配的列在该行开始下一个间隔的行,并且重新开始该比较操作;如果第二指定数量的字母匹配,提供表示匹配成功的输出; 当评估检索单词与表格中指定的单词本体而没有找到匹配时,提供表示匹配失败的输出。
17、 一种数据处理设备,包括机器可读的数字数据实体,所述数字数据包括大量存放在具有行和列的表格中的单词,每个单词存放在不同的行并且该单词的每个字母占据那一行的不 同列,其中在一列中每个相邻的相同字母串形成一个间隔;管理器,编程为通过执行下述操作检索表格,所述操作包括接收给定的检索单词;相对于表格中指定的单词本体评估该检索单词,其包括下述操作 对于用于正在进行比较检索单词的表格中的每个靶单词,比较检索单词的 字母与表格中靶单词的对应列,每次一个字母;如果第一指定数量的字母不匹配,向前跳过一些行到出现不匹配的列中的下一个间隔,并且重新开始该比较操作;如果第二指定数量的字母匹配,提供表示匹配成功的输出; 当评估检索单词与表格中指定的单词本体而没有找到匹配时,提供表示匹配失败的输出。
18、 一种数据处理设备,包括第一装置,用来存储大量存放在具有行和列的表格中的单词,每个单词存 放在不同的行并且该单词的每个字母占据那一行的不同列,其中在一列中每个 相邻的相同字母串形成一个间隔;第二装置,用来通过执行下述操作检索第一装置,所述操作包括接收给定的检索单词;相对于表格中指定的单词本体评估该检索单词,其包括下述操作 对于用于正在进行比较检索单词的表格中的每个靶单词,比较检索单词的字母与表格中靶单词的对应列,每次一个字母;如果第一指定数量的字母不匹配,向前跳过一些行到出现不匹配的列中的下一个间隔,并且重新开始该比较操作;如果第二指定数量的字母匹配,提供表示匹配成功的输出; 当评估检索单词与表格中指定的单词本体而没有找到匹配时,提供表示匹配失败的输出。
全文摘要
一种计算机可读存储介质,所述计算机可读存储介质包括布置机器可读数字数据来帮助加快检索。数据包括大量的单词存放在一个有行和列的表格中,每个单词存放在不同的行并且每个单词的每个字母占据那一行的不同列。在一列中每个连续出现的相同字母串形成一个间隔,单词被相互之间定位来最大化间隔的长度,和/或通过游程长度编码最优化压缩表格列的效率。
文档编号G06F7/00GK101432686SQ200780015700
公开日2009年5月13日 申请日期2007年4月19日 优先权日2006年4月19日
发明者厄兰·昂鲁, 戴维·乔恩·凯 申请人:泰吉克通讯股份有限公司