著录项信息
专利名称 | 地理编码应用中的模糊搜索 |
申请号 | CN201110093834.8 | 申请日期 | 2011-04-14 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2012-10-17 | 公开/公告号 | CN102737060A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 商业对象软件有限公司 | 申请人地址 | 爱尔兰都柏林
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 商业对象软件有限公司 | 当前权利人 | 商业对象软件有限公司 |
发明人 | 陈亮 |
代理机构 | 北京市柳沈律师事务所 | 代理人 | 邵亚丽 |
摘要
本公开描述了用于地理编码应用中的模糊搜索的系统和方法的各种实施例。对要获得其地理编码信息的输入地址执行词汇分析以得到该输入地址的部分。在一个方面,所述词汇分析可以包括解析操作、抽象操作和延伸操作中的至少一个。接下来,使用所述输入地址的部分对结节序列树执行模糊搜索,以便识别匹配所述输入地址的多个部分地址。接下来,针对识别出的多个部分地址中的每一个计算匹配和换位得分,以确定所述输入地址的最佳匹配候选。最后,利用该最佳匹配候选查询地理编码数据库以得到该输入地址的地理编码信息。
1.一种用于地理编码应用的计算机实现方法,该方法包括:
对输入地址执行词汇分析以得到输入地址的部分;
利用得到的输入地址的部分对结节序列树执行模糊搜索,以便识别通过结节序列树存储的多个部分地址中的一个或多个;
针对识别出的多个部分地址中的一个或多个计算匹配和换位得分,以从识别出的多个部分地址中的一个或多个当中确定最佳匹配候选;以及
利用所述最佳匹配候选查询地理编码数据库,以得到与所述输入地址相关的地理编码信息,
其中,针对识别出的多个部分地址中的一个或多个计算匹配和换位得分包括:
将识别出的多个部分地址当中识别出的部分地址中的多个字符与所述输入地址中的多个字符相比较,以匹配识别出的部分地址和所述输入地址中的一个或多个字符;
针对所确定的每个匹配使字符匹配计数器递增;
基于所述比较,确定识别出的部分地址和所述输入地址中的一个或多个匹配字符的位置是否不同;
确定重新排列识别出的部分地址中的所述一个或多个匹配字符的位置以使得识别出的部分地址和所述输入地址中的一个或多个匹配字符的位置相同所需要的换位次数;以及使用所述字符匹配计数器和换位次数来计算识别出的部分地址的匹配和换位得分。
2.根据权利要求1所述的计算机实现方法,其中,所述词汇分析包括解析操作,其根据输入地址的语言将输入地址划分为输入地址的部分。
3.根据权利要求1所述的计算机实现方法,其中,所述词汇分析包括抽象操作,其中,模糊搜索所述结节序列树还包括:
确定输入地址以及存储在结节序列树的父节点中的信息的抽象;以及
将所述输入地址的抽象与存储在所述父节点中的信息的抽象相比较。
4.根据权利要求1所述的计算机实现方法,其中,所述词汇分析包括延伸操作,其中,所述延伸操作根据输入地址的语言扩展输入地址的多个字符。
5.根据权利要求1所述的计算机实现方法,其中,模糊搜索所述结节序列树包括将得到的所述输入地址的部分与存储在所述结节序列树的父节点中的信息相比较。
6.根据权利要求5所述的计算机实现方法,其中,如果所述输入地址的部分中至少其中一个部分的第一个字符与存储在父节点中的信息的第一个字符匹配,则识别所述多个部分地址中的一个或多个。
7.根据权利要求5所述的计算机实现方法,其中,所述父节点是结节序列树的分支序列的根节点,其中,所述分支序列与所述结节序列树的序列信息块关联,并且其中,所述序列信息块存储多个部分地址中至少其中一个。
8.根据权利要求7所述的计算机实现方法,其中,所述序列信息块引用其它序列信息块,并且其中,计算识别出的多个部分地址的匹配和换位得分还包括:
将所述输入地址与存储在所述序列信息块中的多个部分地址中的一个以及存储在所述其它序列信息块中的多个部分地址中的一个相比较。
9.根据权利要求7所述的计算机实现方法,其中,所述分支序列的子节点通过指示遍历所述分支序列的方向的分支连接到所述父节点。
10.根据权利要求9所述的计算机实现方法,还包括:
将所得到的所述输入地址的部分与存储在所述父节点和子节点中的信息的组合相比较。
11.根据权利要求1所述的计算机实现方法,其中,通过结节序列树存储的多个部分地址与存储在所述地理编码数据库中的多个地址匹配。
12.根据权利要求1所述的计算机实现方法,其中,所述输入地址包括多个地址分量。
13.根据权利要求1所述的计算机实现方法,还包括:
识别存储在所述地理编码数据库中的多个地址的多个词中的公共字符;
将识别出的公共字符存储在所述结节序列树的父节点中,所述识别出的公共字符是存储在所述父节点中的信息,所述父节点是所述结节序列树的分支序列的根节点;
将多个词当中、与所述公共字符关联的词的其余部分存储在所述分支序列的子节点中,所述子节点和所述父节点通过指示遍历所述分支序列的方向的分支连接;以及将所述多个部分地址存储在与所述分支序列关联的序列信息块中。
14.根据权利要求1所述的计算机实现方法,其中,存储在所述地理编码数据库中的多个地址具有地址类型以及该地址类型的标识符,存储在所述地理编码数据库中的多个地址被至少基于所述地址类型的标识符重新排列。
15.根据权利要求14所述的计算机实现方法,还包括:
得到所述多个地址的地址类型的缩写,该地址类型的缩写与该地址类型的标识符组合形成缩写地址;
基于所述缩写地址的部分中的字符数目重新排序缩写地址的部分;
按字母顺序排列重新排序的缩写地址;以及
以与重新排序的缩写地址的排列相应的次序重新排列存储在所述地理编码数据库中的多个地址。
16.一种用于地理编码应用的计算机系统,该计算机系统包括:
存储器;以及
处理器,可通信地耦接到所述存储器,该处理器被配置为执行以下操作:
对输入地址执行词汇分析以得到输入地址的部分;
利用得到的输入地址的部分对结节序列树执行模糊搜索,以便识别通过结节序列树存储的多个部分地址中的一个或多个;
针对识别出的多个部分地址中的一个或多个计算匹配和换位得分,以从识别出的多个部分地址中的一个或多个当中确定最佳匹配候选;以及
利用所述最佳匹配候选查询地理编码数据库,以得到与所述输入地址相关的地理编码信息,
其中,针对识别出的多个部分地址中的一个或多个计算匹配和换位得分包括:
将识别出的多个部分地址当中识别出的部分地址中的多个字符与所述输入地址中的多个字符相比较,以匹配识别出的部分地址和所述输入地址中的一个或多个字符;
针对所确定的每个匹配使字符匹配计数器递增;
基于所述比较,确定识别出的部分地址和所述输入地址中的一个或多个匹配字符的位置是否不同;
确定重新排列识别出的部分地址中的所述一个或多个匹配字符的位置以使得识别出的部分地址和所述输入地址中的一个或多个匹配字符的位置相同所需要的换位次数;以及使用所述字符匹配计数器和换位次数来计算识别出的部分地址的匹配和换位得分。
17.根据权利要求16所述的计算机系统,其中,模糊搜索所述结节序列树包括将得到的所述输入地址的部分与存储在所述结节序列树的父节点中的信息相比较。
18.根据权利要求17所述的计算机系统,其中,如果所述输入地址的部分中至少其中一个部分的第一个字符与存储在父节点中的信息的第一个字符匹配,则识别所述多个部分地址中的一个或多个。
19.根据权利要求17计算机系统,其中,所述父节点是结节序列树的分支序列的根节点,其中,所述分支序列与存储所述多个部分地址中至少其中一个的序列信息块关联。
20.根据权利要求19所述的计算机系统,其中,所述序列信息块引用其它序列信息块,其中所述处理器还被配置为执行如下操作:
将所述输入地址与存储在所述序列信息块中的多个部分地址中的一个以及存储在所述其它序列信息块中的多个部分地址中的一个相比较。
21.根据权利要求19所述的计算机系统,其中,所述分支序列的子节点通过指示遍历所述分支序列的方向的分支连接到所述父节点。
22.根据权利要求21所述的计算机系统,其中所述处理器还被配置为执行如下操作:
将所得到的所述输入地址的部分与存储在所述父节点和子节点中的信息的组合相比较。
地理编码应用中的模糊搜索\n技术领域\n[0001] 实施例一般涉及计算机系统,并且更加具体来说,涉及用于得到地址的地理编码\n(geocoding)信息的方法和系统。\n背景技术\n[0002] 地理编码一般被称作根据诸如街道名称、邮政编码等等之类的其它地理数据确定\n地理坐标(通常用纬度和经度表示)的过程。\n[0003] 目前,通过在存储多个地址的地理编码数据库中搜索对接收到的输入地址的匹配\n来执行地理编码。如果在地理编码数据库中发现输入地址的精确匹配,则从该地理编码数\n据库中取出与该输入地址对应的纬度/经度对并且将其提供给用户。\n[0004] 然而,目前的地理编码技术不精准并且仅当接收到的输入地址在地理编码数据库\n中有精确匹配时才管用。当一个或多个下列元素包含于地理编码过程中时会遭遇次最佳\n(sub-optimal)性能:(1)如果接收到的输入地址中的一个词(word)被拼错或者不正确的\n话,例如,如果地址“SAINT JOHN ROAD”被错拼为“SANT JOHN ROAD”或者错打为“SAINT JOHN STREET”;(2)如果接收到的输入地址中的一个词可以用多于一种的方式来表示的话,\n例如,词“HIGHWAY”可以表示为“HWY”,英文单词“WEST”在法语中可以被表示为“OUEST”;以及(3)如果输入地址的词可以以不同的方式组织但是仍然保持相同的含义的话,例如,地址\n“Highway 5”可以是“HighwayNo.5”或者“Highway#5”或者“No.5Highway”。\n[0005] 因此,根据各种输入数据中任何一种返回较为精准的地理编码结果的能力是人们\n所期待的。\n发明内容\n[0006] 这里描述了用于地理编码应用中的模糊搜索的系统和方法的各种实施例。对输入\n地址执行词汇分析以得到输入地址的部分(portion of the inputaddress)。利用得到的\n输入地址的部分对结节序列树执行模糊搜索以识别通过结节序列树存储的多个部分地址\n(partial address)中的一个或多个。\n[0007] 针对识别出的多个部分地址计算匹配和换位(transposition)得分,以确定识别\n出的多个部分地址中的最佳匹配候选。利用最佳匹配候选查询地理编码数据库以得到与输\n入地址相关的地理编码信息。\n[0008] 当考虑结合后面的附图给出的本发明优选实施例的以下详细说明时,本发明实施\n例的这些及其它好处和特征将变得明显。\n附图说明\n[0009] 权利要求利用具体特征阐述了本发明的实施例。在附图中的图中以示例方式而非\n以限制方式示出本发明,附图中同样的参考标号表示类似元素。本发明的实施例连同其优\n点可以从以下结合附图的详细说明中得到更好的理解。\n[0010] 图1是示出根据实施例的用于地理编码应用中的模糊搜索的方法的流程图。\n[0011] 图2是示出根据实施例的包括在对输入地址执行的词汇分析中的一个或多个操作\n的框图。\n[0012] 图3是示出根据实施例的用于创建结节序列树的方法的流程图。\n[0013] 图4示出根据示范性实施例的示范性参考数据。\n[0014] 图5A-5B示出根据实施例使用图4的参考数据生成结节序列树。\n[0015] 图6示出根据实施例使用图4的参考数据生成的抽象结节序列树。\n[0016] 图7示出根据实施例模糊搜索图5B的结节序列树或者图6的抽象结节序列树的方\n法。\n[0017] 图8是示出根据实施例针对识别出的多个部分地址计算匹配和换位得分的方法的\n流程图。\n[0018] 图9示出根据实施例用于针对识别出的多个部分地址确定匹配和换位得分的换位\n权重表。\n[0019] 图10示出根据实施例确定用于计算匹配和换位得分的字符匹配计数器和换位次\n数的示范性代码。\n[0020] 图11是示出根据实施例用于重新排列存储在地理编码数据库中的多个地址的方\n法的流程图。\n[0021] 图12A示出根据实施例的示范性地理编码数据库。\n[0022] 图12B示出根据实施例存储经重新排列的多个地址的、图12A的示范性地理编码数\n据库。\n[0023] 图13A示出根据实施例将确定其地理编码信息的示范性输入地址。\n[0024] 图13B-13C示出根据实施例在对图13A的输入地址执行词汇分析之后得到的、图\n13A的输入地址的部分。\n[0025] 图13D示出根据实施例针对图13A的输入地址的、识别出的部分地址的列表。\n[0026] 图13E示出根据实施例存储在地理编码数据库中的参考数据的一部分。\n[0027] 图14是示出根据实施例的、可以实现针对地理编码应用中的模糊搜索所描述的技\n术的计算环境的框图。\n具体实施方式\n[0028] 这里描述了用于地理编码应用中的模糊搜索的技术的各种实施例。在下面的描述\n中,阐述了大量具体细节以提供对本发明的实施例的全面理解。然而,本领域的技术人员将\n认识到,可以实践本发明而无需一个或多个所述具体细节,或者利用其它方法、组件、素材\n等等来实践本发明。在其它实例中,没有示出或者详细描述公知结构、素材或操作以避免模\n糊了本发明的方面。\n[0029] 贯穿本说明书,对“一个实施例”、“本实施例”及类似短语的引用指的是结合该实施例描述的特定特征、结构或者特性包括在本发明的至少一个实施例中。因此,贯穿本说明\n书这些短语在各个位置的出现并不一定全都指代相同的实施例。此外,特定特征、结构或者\n特性可以在一个或多个实施例中以任意适合的方式组合。\n[0030] 图1是示出根据实施例的用于地理编码应用中的模糊搜索的方法的流程图。在一\n个实施例中,地理编码应用可以用于针对输入地址寻找地理编码信息,诸如地理坐标。可以\n从用户接收输入地址。输入地址可以包括一个或多个地址分量。例如,输入地址“3,SAINT JOHN STREET,10001”包括三个地址分量,它们是:房屋号码地址分量(3);街道名称地址分量(SAINTJOHN STREET);和邮政编码地址分量(10001)。\n[0031] 根据一个实施例,最初在块102处,对输入地址执行词汇分析。词汇分析包括对输\n入地址的地址分量中的一个执行以得到输入地址的部分的一个或多个操作,所述一个或多\n个操作要么单独执行要么相互结合执行。\n[0032] 在一个实施例中,可以基于输入地址的语言定义词汇分析。例如,如果输入地址是\n英语的,那么就可以将词汇分析定义为根据空格来划分输入地址,因为英语在每个词之间\n都有空格。\n[0033] 接下来在块104处,利用在块102处得到的输入地址的部分对结节序列树执行模糊\n搜索。在一个实施例中,模糊搜索——亦称近似或不精确匹配——是这样一种搜索技术:其\n搜索那些近似或者基本上匹配给定文本串模式(pattern)的文本串。可能在执行模糊搜索\n的同时不经意地发生了精确匹配。模糊搜索可能有助于找到某个词的正确匹配,即使该词\n被拼错。例如,对“appple”的模糊搜索也可能找到“apple”。这是因为,模糊搜索是一种不精确或近似的匹配技术。\n[0034] 在一个实施例中,结节序列树(knot-sequence tree)存储在存储器中。结节序列\n树存储与存储在地理编码数据库中的多个部分地址匹配的多个部分地址。在一个实施例\n中,通过结节序列树存储的部分地址是存储在地理编码数据库中的多个地址中的一个或多\n个地址的一部分的精确匹配。部分地址是存储在地理编码数据库中的多个地址的地址分\n量。例如,如果存储在地理编码数据库中的地址是“3,SAINT JOHN STREET,10001”,那么存储在结节序列树中的部分地址可以是街道名称地址分量,即“SAINT JOHN STREET”。\n[0035] 在一个实施例中,利用得到的输入地址的部分模糊搜索结节序列树识别由结节序\n列树存储的部分地址,这些部分地址可以被称作输入地址的模糊匹配。\n[0036] 在一个实施例中,模糊搜索结节序列树可以包括将输入地址的部分的一个或多个\n字符与存储在结节序列树的节点中的信息的一个或多个字符相比较,以将输入地址的这些\n部分与存储在结节序列树的节点中的信息进行模糊匹配。\n[0037] 接下来在块106处,针对在块104处识别出的部分地址计算匹配和换位得分,以确\n定识别出的部分地址中的最佳匹配候选。在一个实施例中,最佳匹配候选可以是具有最高\n匹配和换位得分的部分地址。最佳匹配候选可以是识别出的多个部分地址当中对输入地址\n的最佳匹配。在一个实施例中,如果对于多于一个的部分地址的匹配和换位得分是相同的,\n那么多于一个的部分地址可以被识别为最佳匹配候选。\n[0038] 最后在块108处,利用在块106处确定的最佳匹配候选查询地理编码数据库以得到\n与该输入地址相关的地理编码信息。在一个实施例中,存储在地理编码数据库中的参考数\n据包括多个地址以及与该多个地址对应的地理编码信息。查询地理编码数据库以确定该最\n佳匹配候选是否匹配存储在地理编码数据库中的参考数据中多个地址中的至少一个。从地\n理编码数据库中取出(retrieved)与存储在地理编码数据库中的、匹配最佳匹配候选的地\n址相关的地理编码信息。\n[0039] 在一个实施例中,存储在地理编码数据库中的多个地址具有地址类型以及该地址\n类型的标识符。例如,对于地址“SAINT JOHN STREET”,该地址的地址类型是“STREET”并且该地址类型的标识符是“SAINT JOHN”。至少基于该地址类型的标识符重新排列存储在地理\n编码数据库中的地址。\n[0040] 在一个实施例中,利用地址分量(即,输入地址的部分地址)的部分对结节序列树\n执行模糊搜索,并且对该输入地址的地址分量中的一个确定最佳匹配候选。在这种情况下,\n该输入地址的其余地址分量与该最佳匹配候选合并以得到一个查询。然后,利用该查询查\n询地理编码数据库以得到与该输入地址相关的地理编码信息。\n[0041] 在上面讨论的例子中,可以利用输入地址“3,SAINT JOHN STREET,10001”的地址\n分量“SAINT JOHN STREET”的部分执行对结节序列树的模糊搜索,以将“SAINT JOHN ROAD”识别为对地址分量“SAINT JOHNSTREET”的最佳匹配候选。然后,将其余地址分量“3”和\n“10001”与最佳匹配候选“SAINT JOHN ROAD”合并以得到查询“3,SAINT JOHN ROAD,\n10001”。然后,所得到的查询“3,SAINT JOHN ROAD,10001”可以用来查询地理编码数据库以得到输入地址“3,SAINT JOHN STREET,10001”的地理编码信息。\n[0042] 在一个实施例中,最佳匹配候选或者所得到的查询可以相应于存储在地理编码数\n据库中的多个地址中的多于一个的地址。在这种情况下,对存储在地理编码数据库中的多\n个地址中的多于一个的地址中的每一个确定匹配和换位(transposition)得分。然后,与存\n储在地理编码数据库中的地址当中的、具有最高匹配和换位得分的地址相应的地理编码信\n息被确定为该输入地址的地理编码信息。\n[0043] 图2是示出根据实施例的、包括在对输入地址执行的词汇分析200中的一个或多个\n操作的框图。在一个实施例中,一个或多个操作包括解析操作202、抽象(abstraction)操作\n204和延伸(stretch)操作206。对输入地址单独地或者组合地执行解析操作202、抽象操作\n204和延伸操作206。\n[0044] 在一个实施例中,解析操作202将输入地址划分以得到该输入地址的部分。解析操\n作202可以根据输入地址的语言将输入地址划分为多个部分。例如,如果输入地址是英文\n的,那么就可以在每个空格处对输入地址进行划分以得到该输入地址的多个部分(词)。在\n上面输入地址“3,SAINT JOHNSTREET,10001”的例子中,对输入地址执行解析操作在每个空格处划分输入地址,以得到五个部分,它们是:“3”、“SAINT”、“JOHN”、“STREET”和“10001”。\n如果输入地址是中文的,那么输入地址中的词就不是用空格(white space)来分隔。因此,\n假如输入地址是中文的,解析操作可以使用隐马尔可夫模型(Hidden Markov Model)以得\n到输入地址的部分。\n[0045] 在解析操作将输入地址划分为部分之后,利用输入地址的部分对结节序列树执行\n模糊搜索以识别与输入地址匹配的部分地址。在一个实施例中,输入地址的部分中的每一\n个都与存储在结节序列树的节点中的信息相比较。在上面“3,SAINT JOHN STREET,10001”的例子中,部分“3”、“SAINT”、“JOHN”、“STREET”和“10001”中的每一个都与存储在结节序列树的节点中的信息相比较。\n[0046] 在一个实施例中,抽象操作204得到输入地址的抽象。诸如Metaphone、Double \nMetaphone和Soundex之类的语音学关键词算法(phonetic keyalgorithm)是抽象操作的例\n子。语音学关键词算法得到输入地址的每个部分(词)的语音学表示,作为输入地址的抽象\n(abstraction)。然后,利用输入地址的抽象对结节序列树执行模糊搜索以识别与输入地址\n匹配的部分地址。\n[0047] 在上面“3,SAINT JOHN STREET,10001”的例子中,如果所执行的抽象操作是语音\n学关键词算法,那么得到的抽象就是“3,SNT JN STRT,10001”,其中“SNT”、“JN”和“STRT”分别是“SAINT”、“JOHN”和“STREET”的语音学表示。\n[0048] 在一个实施例中,延伸操作206根据输入地址的语言扩展输入地址的字符。地址的\n扩展可以包括将输入地址中的字符变换为不同的语言。例如,中文拼音生成是将输入地址\n中的每个中文字符翻译为英文中的拼音单词的延伸操作。\n[0049] 通过延伸操作206扩展输入地址中的字符以得到扩展地址。然后,利用扩展地址对\n结节序列树执行模糊搜索以识别部分地址。例如,如果输入地址是中文的,那么中文拼音生\n成器就得到扩展的拼音地址,其包括针对输入地址中每个中文字符的拼音单词。\n[0050] 在一个实施例中,相互组合地执行解析操作202、抽象操作204和延伸操作206。例\n如,一开始,可以对中文的输入地址应用中文拼音生成器(延伸操作206)以得到扩展的拼音\n地址,然后可以对扩展拼音地址应用解析操作202以得到经扩展的拼音地址的部分。然后,\n利用得到的扩展拼音地址的部分对结节序列树执行模糊搜索以针对该输入地址识别部分\n地址。\n[0051] 在另一例子中,一开始可以对输入地址应用解析操作202以得到输入地址的部分,\n然后可以对得到的部分执行抽象操作204。在上面例子中,可以首先通过应用解析操作202\n将输入地址“3,SAINT JOHN STREET,10001”划分为五个部分“3”、“SAINT”、“JOHN”、“STREET”和“10001”。然后可以对得到的部分应用语音学关键词算法,即抽象操作204,以得到表示得到的部分中的每一个的语音学关键词,即“3”、“SNT”、“JN”、“STRT”和“10001”。然后,可以利用输入地址的部分中的每一个的抽象对结节序列树执行模糊搜索以针对该输入\n地址识别多个部分地址。\n[0052] 图3是示出根据实施例的用于创建结节序列树的方法的流程图300。在一个实施例\n中,在设计时间中创建结节序列树。使用存储在地理编码数据库中的、包括在参考数据中的\n多个地址创建结节序列树。在一个实施例中,使用部分地址创建结节序列树。结节序列树将\n部分地址存储在存储器中。\n[0053] 如图所示,一开始,在块302处,在存储在地理编码数据库中的地址的词中识别公\n共字符。在一个实施例中,搜索地理编码数据库以识别存储在地理编码数据库中的部分地\n址的词中的公共字符。识别存储在地理编码数据库中的地址的词中的公共字符。例如,如果\n地址中的一个词是“MAIN”并且该地址中的另一个词是“MARY”,那么识别出的公共字符就是“MA”。\n[0054] 在一个实施例中,搜索地址的部分以识别它的词中的公共字符。例如,可以搜索存\n储在地理编码数据库中的地址的街道名称地址分量以识别街道名称地址分量中的词中的\n公共字符。\n[0055] 在一个实施例中,识别出的公共字符存储在结节序列树的父节点中。识别出的公\n共字符是存储在结节序列树的父节点中的信息,其将在该结节序列树的模糊搜索期间与输\n入地址的部分相比较。\n[0056] 接下来在块304处,在块302处识别出的公共字符被存储在结节序列树的父节点\n中。在一个实施例中,公共字符存储在结节序列树的分支序列的父节点中。在一个实施例\n中,结节序列树包括一个或多个父节点,它们各自存储在块302处识别出的公共字符中的一\n个。在上面的例子中,识别出的“MAIN”和“MARY”的公共字符“MA”被存储在结节序列树的父节点中。\n[0057] 在一个实施例中,结节序列树包括分支序列。分支序列可以包括通过指示遍历该\n分支序列的方向的分支连接的一个或多个节点。在一个实施例中,存储在分支序列的节点\n中的信息的组合可以识别存储在结节序列树中的一个或多个部分地址。父节点是分支序列\n的根节点。在一个实施例中,父节点是一个或多个分支序列的根节点。\n[0058] 接下来在块306处,与在块302处识别出的公共字符相关联的多个词当中的词的其\n余部分被存储在该分支序列的子节点中。父节点和子节点可以通过指示遍历该分支序列的\n方向的分支连接。在上面的例子中,词“MAIN”和“MARY”的其余部分分别是“IN”和“RY”。其余部分“IN”和“RY”被存储在分离的子节点中并且通过分离的分支连接到该父节点,该父节点存储公共的一个或多个具有分支的字符“MA”。\n[0059] 在一个实施例中,如果公共字符仅与地址中的一个词关联,那么其余部分被存储\n在父节点中。\n[0060] 最后在块308处,地址被存储在与该分支序列关联的一个或多个序列信息块中。在\n一个实施例中,部分地址被存储在与该分支序列关联的一个或多个序列信息块中。在一个\n实施例中,与该分支序列关联的序列信息块存储部分地址,其包含存储在该分支序列的父\n节点中的公共字符或者存储在该分支序列的父节点和子节点中的公共字符与其余部分的\n组合。例如,部分地址“STREET MAIN,10001”被存储在与这样的分支序列关联的序列信息块中:该分支序列的父节点存储“MA”。\n[0061] 在一个实施例中,序列信息块可以与多于一个的分支序列关联。例如,存储“SAINT JOHN STREET”的序列信息块可以与第一序列信息块、第二信息块和第三序列信息块关联,\n其中第一序列信息块的父节点存储“SAINT”,第二信息块的父节点存储“JOHN”,第三序列信息块的父节点存储“STREET”。\n[0062] 在一个实施例中,序列信息块引用结节序列树的一个或多个序列信息块当中的其\n它序列信息块。存储在其它序列信息块中的部分地址的部分与存储在该序列信息块中的部\n分地址的部分相关。例如,存储地址“West Street”的序列信息块可以引用存储地址“Ouest Road”的另一序列信息块。存储在地址“Ouest Road”的其它序列信息块中的部分“Ouest”与存储在序列信息块中的地址“West Street”的部分“West”相关。\n[0063] 在一个实施例中,如果识别出的部分地址存储在引用其它序列信息块的序列信息\n块中,那么存储其它序列信息块中的部分地址被视为识别出的部分地址。\n[0064] 图4示出根据示范性施例的示范性参考数据400。正如以上的讨论,参考数据可以\n存储在地理编码数据库中。如图所示,存储在地理编码数据库中的参考数据包括多个地址\n402和与地址402相应的地理编码信息404。在一个实施例中,地址402包括街道名称地址分\n量406、邮政编码地址分量408和房屋号码范围地址分量410。\n[0065] 图5A-5B示出根据实施例使用图4的参考数据400生成结节序列树500。使用部分地\n址——即图4的地址402的街道名称地址分量406——生成结节序列树500。在一个实施例\n中,当对结节序列树的模糊搜索要针对街道名称地址分量406来执行时,使用街道名称地址\n分量406来生成结节序列树500。\n[0066] 一开始,识别多个词——即街道名称地址分量406中的“MAY”、“STREET”、\n“AVENUE”、“MARY”、“SAINT”、“JOHN”、“LAKE”、“ROAD”、“5”和“5X”——中的公共字符。如图5A中所示,识别出的公共字符是:相应于街道地址分量中的词“MAY”和“MARY”的“HA”;相应于街道地址分量中的“SAINT”和“STREET”的“S”;相应于街道地址分量中的“5”和“5X”的“5”;\n相应于街道地址分量中的“JOHN”的“J”;相应于街道地址分量中的“ROAD”的“R”;相应于词“LAKE”的“L”;以及相应于街道地址分量中的“AVENUE”的“A”。\n[0067] 接下来如图5A中所示,识别出的公共字符“HA”、“S”、“5”、“J”、“R”、“L”和“A”中的每一个都分别被存储在父节点502、504、506、508、510、512和514中。在一个实施例中,父节点中识别出的公共字符是存储在父节点中的信息。如图5B中所示,父节点502是分支序列\n516和518的根节点,父节点504是分支序列520-528的根节点,父节点506是分支序列530和\n532的根节点,父节点508是分支序列534的根节点,父节点510是分支序列536的根节点,父\n节点512是分支序列538的根节点,以及父节点514是分支序列540的根节点。\n[0068] 接下来,词“MAY”的其余部分——即,与存储在父节点502中的公共字符“MA”关联的“Y”——被存储在分支序列516的子节点542中。父节点502和子节点542通过指示遍历分\n支序列516的方向的分支544连接,即,如果对结节序列树500执行模糊搜索的话,那么首先\n搜索存储在父节点502中的信息,然后搜索存储在子节点542中的信息。\n[0069] 词“MARY”的其余部分——即,与存储在父节点502中的公共字符“MA”关联的\n“RY”——被存储在分支序列518的子节点546中。父节点502和子节点546通过指示遍历分支\n序列518的方向的分支548连接。\n[0070] 词“SAINT”的其余部分——即,与存储在父节点504中的公共字符“S”关联的\n“AINT”——被存储在分支序列520的子节点550中。父节点504和子节点550通过指示遍历分\n支序列520的方向的分支552连接。词“STREET”的其余部分——即,与存储在父节点504中的公共字符“S”关联的“TREET”——被存储在分支序列522-528的子节点554中。父节点504和子节点554通过分支556连接。\n[0071] 词“5X”的其余部分——即,与存储在父节点506中的公共字符“5”关联的“X”——被存储在分支序列530的子节点558中。父节点506和子节点558通过指示遍历分支序列530\n的方向的分支560连接。父节点506也通过指示遍历分支序列532的方向的分支564与子节点\n562连接。\n[0072] 而且,分别存储在父节点508、510、512和514中的公共的一个或多个字符J、R、L和A仅相应于街道名称地址分量406中的多个词中的一个词,即,分别相应于“JOHN”、“ROAD”、“LAKE”和“AVENUE”。因此,分别与公共字符J、R、L和A相应的其余部分“OHN”、“OAD”、“AKE”和“VENUE”与公共字符一起被分别存储在父节点508、510、512和514中。\n[0073] 在一个实施例中,结节序列树500包括存储多个部分地址的序列信息块。序列信息\n块可以与一个或多个分支序列关联。在一个实施例中,存储在分支序列的父节点和子节点\n中的信息标识存储在与该分支序列关联的序列信息块中的部分地址。如图所示,分支序列\n信息块566存储部分地址“STREET 5X,20001”。分支序列信息块566与分支序列528和530关\n联。分支序列530的父节点和子节点,分别为506和558,存储“5X”,其标识存储在与分支序列\n530关联的分支序列信息块566中的部分地址“STREET 5X,20001”。分支序列528的父节点和子节点,分别为504和554,存储“STREET”,其也标识存储在与分支序列528关联的分支序列信息块566中的部分地址“STREET 5X,20001”。\n[0074] 类似地,分支序列信息块568存储部分地址“STREET 5,20001”并且与分支序列526\n和532关联。分支序列信息块570存储部分地址“SAINTJOHN STREET”并且与分支序列524和\n534关联。分支序列信息块572存储部分地址“LAKE ROAD”并且与分支序列536和538关联。分支序列信息块574存储部分地址“AVENUE MARY”并且与分支序列518和540关联。分支序列信\n息块576存储部分地址“MAY STREET 10001”并且与分支序列516和522关联。\n[0075] 在一个实施例中,分支序列信息块574引用如箭头578所指的另一分支序列信息块\n572。存储在另一分支序列信息块572中的部分地址“LAKEROAD”的部分“ROAD”与存储在序列信息块574中的部分地址“AVENUEMARY”的部分“AVENUE”相关。\n[0076] 图6示出根据实施例使用图4的参考数据生成的抽象结节序列树(abstraction \nknot-sequence tree)600。在一个实施例中,在设计时间创建抽象结节序列树600并且将其\n存储在存储器中。在一个实施例中,抽象结节序列树600的父节点存储街道名称地址分量\n406的词中的公共字符的抽象。抽象结节序列树的子节点存储与存储在父节点中的公共字\n符关联的词的其余部分的抽象。\n[0077] 正如以上关于图5A-5B所讨论的那样,针对街道名称地址分量中的多个词识别出\n的公共字符是“MA”、“S”、“5”、“J”、“R”、“L”和“A”。在一个实施例中,如果公共字符与多于一个的词关联的话,那么就得到该公共字符的抽象。而且,如果公共字符仅与一个词关联的\n话,那么就得到该词的抽象。正如以上所讨论的,与多于一个的词相关的公共字符是“MA”、“S”和5。公共字符“MA”的抽象是“M”,公共字符“S”和“5”的抽象与输入相同,即,分别是“S”和5。如图所示,得到的抽象“M”被存储在分支序列616的父节点602中。得到的抽象“S”被存储在分支序列620-628的父节点604中。得到的抽象“5”被存储在分支序列630和632的父节\n点606中。\n[0078] 公共字符“J”、“R”、“L”和“A”仅与一个词关联,分别是“JOHN”、“ROAD”、“LAKE”和“AVENUE”。词“JOHN”、“ROAD”、“LAKE”和“AVENUE”的抽象分别是“JN”、“RD”、“LKE”和“AVE”。\n词“JOHN”的抽象,即“JN”,存储在分支序列634的父节点608中;词“ROAD”的抽象,即“RD”,存储在分支序列636的父节点610中;词“LAKE”的抽象,即“LKE”,存储在分支序列638的父节点\n612中;以及词“AVENUE”的抽象,即“AVE”,存储在分支序列640的父节点614中。\n[0079] 接下来,得到与公共字符关联的词的其余部分的抽象。与公共字符“MA”关联的其\n余部分分别是“Y”和“RY”。其余部分“Y”和“RY”的抽象与输入相同,即,分别是Y和RY。其余部分“Y”和“RY”的抽象分别存储在分支序列616和618的子节点642和646中。\n[0080] 存储在父节点604中的公共字符“S”的其余部分是“AINT”和“TREET”。其余部分\n“AINT”的抽象是“NT”,其存储在分支序列的子节点650中。其余部分“TREET”的抽象是\n“TRT”,其存储在子节点654中。与公共字符“5”关联的词的其余部分是“X”。其余部分“X”的抽象与输入相同,即“X”,其存储在分支序列630的子节点658中。\n[0081] 分支644、648、652、656、660和664具有与图5B的分支544、548、552、556、560和564类似的特征。分支序列信息块666-676具有与图5B的分支序列信息块566-576类似的特征。\n[0082] 图7示出根据实施例模糊搜索图5B的抽象结节序列树500或者图6的抽象结节序列\n树600的方法700。\n[0083] 一开始在块702处,执行校验以确定存储在结节序列树的父节点中的信息的第一\n个字符是否匹配输入地址的部分的第一个字符。在一个实施例中,执行校验以确定输入地\n址的部分中至少其中一个部分的第一个字符是否匹配结节序列树的父节点中存储的信息。\n正如以上所讨论的那样,存储在地理编码数据库中的多个地址的每个词中的公共字符是存\n储在父节点中的信息。在一个实施例中,执行校验以确定存储在结节序列树的父节点中的\n公共字符是否匹配输入地址的每个部分中的第一个字符。\n[0084] 在一个实施例中,得到输入地址的每一个部分的抽象。例如,得到输入地址的每一\n个部分的语音学表示。然后,执行校验以确定输入地址的每一部分的抽象的第一个字符是\n否匹配存储在抽象结节序列树的父节点中的信息。\n[0085] 在一个实施例中,确定输入地址的部分的抽象与存储在结节序列树的父节点中的\n信息,然后执行校验以确定存储在父节点中的信息的抽象的第一个字符是否匹配输入地址\n的部分的抽象的第一个字符。例如,如果输入地址是“SAINT JOHN STREET”,那么输入地址的部分是“SAINT”、“JOHN”和“STREET”。输入地址的部分的抽象是“SNT”、“JN”和“STRT”。这些抽象中的每一个,即“SNT”、“JN”和“STRT”,都与存储在结节序列树的父节点中的信息的抽象或者存储在抽象结节序列树的父节点中的信息相比较。\n[0086] 假如存储在父节点中的信息的第一个字符匹配输入地址的部分中至少其中一个\n部分的第一个字符,即如果在块702中的条件为真的话,那么就执行校验以确定存储在父节\n点和子节点中的信息的组合是否匹配输入地址的部分(块704)。在一个实施例中,在块702\n处执行校验以确定存储在父节点和子节点中的信息的组合是否匹配输入地址的一部分、该\n部分的第一个字符匹配存储在父节点中的信息的第一个字符。在一个实施例中,在父节点\n与通过分支连接到该父节点的每一个子节点之间得到信息的组合。在一个实施例中,在根\n节点是父节点的分支序列的子节点和该父节点之间得到信息的组合。在一个实施例中,得\n到存储在父节点与子节点中的信息的组合的抽象,并且将信息的组合的抽象与输入地址的\n部分的抽象相比较。\n[0087] 最后,在块706处,如果存储在分支序列的父节点与子节点中的信息的组合匹配输\n入地址的部分中的至少其中一个部分,那么存储在与该分支序列关联的序列信息块中的部\n分地址就被识别出来。\n[0088] 在一个实施例中,从用于计算匹配和换位得分的存储器中取出识别出的部分地\n址。\n[0089] 在一个实施例中,如果存储识别出的部分地址的其中一个的序列信息块引用另一\n序列信息块,那么存储在该另一序列信息块中的部分地址也被视为识别出的部分地址。\n[0090] 接下来,针对识别出的多个部分地址计算匹配和换位得分。\n[0091] 图8是示出根据实施例针对识别出的多个部分地址计算匹配和换位得分的方法的\n流程图800。在一个实施例中,针对通过模糊搜索结节序列树识别出的多个部分地址中的每\n一个计算匹配和换位得分。在一个实施例中,匹配和换位得分从识别出的多个部分地址当\n中确定最佳匹配候选。\n[0092] 一开始在块802处,将识别出的多个部分地址当中的一个识别出的部分地址与输\n入地址相比较。在一个实施例中,将识别出的部分地址中的每一个与输入地址相比较以针\n对识别出的部分地址中的每一个计算匹配和换位得分。\n[0093] 在一个实施例中,将识别出的部分地址与输入地址相比较包括将识别出的部分地\n址中的字符与输入地址中的字符相比较。在一个实施例中,将识别出的部分地址中的字符\n中的每一个与输入地址中的字符中的每一个相比较。将识别出的部分地址中的字符与输入\n地址中的字符相比较以匹配在识别出的部分地址和输入地址中公用的一个或多个字符。\n[0094] 在一个实施例中,将识别出的部分地址中的字符按顺序与输入地址中的字符相比\n较。例如,如果输入地址是“SAINT JOHN”并且针对“SAINT JOHN”识别出的部分地址是\n“SAINT MARK AVENUE”,那么一开始将“SAINTJOHN”的第一个字符“S”与“SAINT MARK \nAVENUE”的所有字符相比较,接下来将“SAINT JOHN”的第二个字符“A”与“SAINT \nMARKAVENUE”的所有字符相比较。类似地,将“SAINT JOHN”的字符中的每一个按顺序与\n“SAINT MARK AVENUE”的所有字符相比较。在本例中匹配的一个或多个字符是“SAINT”,其在“SAINT JOHN”和“SAINT MARK AVENUE”两者中是公用的。\n[0095] 在一个实施例中,在完成将识别出的部分地址中的字符与输入地址中的字符之间\n的比较之后,从识别出的部分地址和输入地址两者中去除匹配的字符以得到识别出的部分\n地址的其余部分和输入地址的其余部分。然后,将识别出的部分地址的其余部分中的字符\n与输入地址的其余部分中的字符相比较,以匹配在识别出的部分地址的其余部分和输入地\n址的其余部分中的字符。\n[0096] 接下来,在块804处,针对在块802处确定的每个匹配使字符匹配计数器递增。在一\n个实施例中,字符匹配计数器等于匹配的字符的数目。字符匹配计数器可以一开始被设置\n为零。在上面“SAINT JOHN”和“SAINTMARK AVENUE”的例子中,字符匹配计数器的值是5,这是因为对于匹配的字符“S”、“A”、“I”、“N”和“T”中的每一个字符匹配计数器分别递增5次。\n[0097] 在一个实施例中,确定位置彼此邻近的一个或多个匹配字符的数目是否大于位置\n彼此邻近的一个或多个匹配字符的预定最小数目(M)。在一个实施例中,只有当位置彼此邻\n近的一个或多个匹配字符的数目大于M时才使字符匹配计数器递增。例如,如果输入地址是\n“SAINT JOHN”并且识别出的部分地址是“SAINT POPE”,那么匹配字符的数目就是6,即,“S”、“A”、“I”、“N”、“T”和“O”。然而,位置彼此邻近的匹配字符的数目是5,即“S”、“A”、“I”、“N”和“T”。该数目(5)应当大于M,否则对于识别出的部分地址“SAINT POPE”的字符匹配计数器就是0。\n[0098] 接下来,在块806处,执行校验以确定在识别出的部分地址和输入地址中的匹配的\n一个或多个字符的位置是否不同。在一个实施例中,执行校验以确定在识别出的部分地址\n和输入地址中的匹配的一个或多个字符的位置是否是对调的(transposed),即,交换的\n(interchanged)。\n[0099] 在一个实施例中,匹配字符包括位置彼此相邻的第一匹配字符集合和位置彼此相\n邻的第二匹配字符集合。在一个实施例中,如果在识别出的部分地址和输入地址其中之一\n中,第一匹配字符集合和第二匹配字符集合的位置是交换的,那么匹配字符就是对调的。考\n虑输入地址“STREET MAIN”和识别出的部分地址“MAIN STREET”的例子。“STREET MAIN”和“MAINSTREET”中匹配的一个或多个字符是“STREET”和“MAIN”。位置彼此相邻的一个或多个匹配字符的第一集合是“STREET”,并且位置彼此相邻的一个或多个匹配字符的第二集合是\n“MAIN”。在“STREET MAIN”和“MAINSTREET”中一个或多个匹配字符的第一集合——即\n“STREET”——与一个或多个匹配字符的第二集合——即“MAIN”——的位置是交换的。因\n此,输入地址“STREET MAIN”是识别出的多个部分地址其中之一即"MAINSTREET″的换位。\n[0100] 接下来,如果在块806中条件为真,那么在块808中确定换位次数(anumber of \ntransposition)。在一个实施例中,换位次数是重新排列一个或多个匹配字符的位置以使\n得识别出的部分地址和输入地址中的一个或多个匹配字符的位置相同所需要的换位。在上\n面“STREET MAIN”和“MAIN STREET”的例子中,所需要的换位次数是1,因为需要1次转换来将“STREET MAIN”中的“STREET”和“MAIN”的位置改变为“MAIN STREET”。\n[0101] 在一个实施例中,如果块806中的条件是假,那么换位次数就是零。在一个实施例\n中,定义函数transposition_gestalt以返回针对识别出的部分地址的字符匹配计数器和\n换位次数。\n[0102] 最后,在块810处,分别在块804和808处确定的字符匹配计数器和换位次数被用于\n计算识别出的部分地址的匹配和换位得分。在一个实施例中,针对识别出的多个部分地址\n中的每一个执行块802-810中描述的过程以计算多个部分地址中的每一个的匹配和换位得\n分。在一个实施例中,识别出的多个部分地址当中具有最高匹配和换位得分的部分地址被\n确定为最佳匹配候选。最后,利用该最佳匹配候选查询地理编码数据库以得到与该输入地\n址相关的地理编码信息。\n[0103] 图9示出根据实施例用于确定识别出的多个部分地址的匹配和换位得分的换位权\n重表900。换位权重表900包括存储换位次数902和与换位次数相应的权重904的两个行。换\n位权重表900分配与换位次数相应的权重。如图所示,如果换位次数902是0,则分配的权重\n904是1,如果换位次数902是1,则分配的权重904是0.8。如果换位次数902是2,则分配的权\n重904是0.3,并且如果换位次数902是3,则分配的权重904是0.1。\n[0104] 在一个实施例中,使用匹配和换位得分公式计算匹配和换位得分:\n[0105]\n[0106] 其中权重[i]是从换位权重表中得到的与识别出的部分地址的换位次数相应的权\n重;\n[0107] ret[1][i]是针对第i次换位的字符匹配计数器的值;\n[0108] 串A和串B分别指代识别出的部分地址和输入地址;\n[0109] 长度(A)和长度(B)分别指代识别出的部分地址和输入地址中的字符数目;以及\n[0110] i是换位次数。\n[0111] 匹配和换位得分公式将与特定换位次数相应的权重和与特定换位次数相应的字\n符匹配计数器的乘积求和。所得到的总和乘以2。最后,所得到的乘积除以识别出的部分地\n址与输入地址中的字符数目的总和,以得到匹配和换位得分。\n[0112] 在一个实施例中,计算存储识别出的部分地址的序列信息块所引用的其它序列信\n息块中存储的部分地址的匹配和换位得分。在这种情况下,在计算该部分地址的换位和匹\n配得分之前,将存储在另一序列信息块中的该部分地址的、使该部分地址与识别出的部分\n地址相关的部分从该部分地址和输入地址两者中去除。\n[0113] 考虑将为其确定最佳匹配候选的输入地址“ST MARY”的例子。针对输入地址“ST \nMARY”从结节序列树中识别出的部分地址是“ST JOHN”和“AVENUE MARY”。部分地址“MAY STREET”存储在另一序列信息块中,该另一序列信息块被存储识别出的部分地址“ST JOHN”的信息块引用。部分地址“MAY STREET”中的部分“STREET”将部分地址“MAY STREET”与部分地址“ST JOHN”相关。因为“STREET”是“ST”的别名,所以通过用“STREET”替换输入地址中的“ST”来计算“MAY STREET”的匹配和换位得分。为“AVENE MARY”、“ST JOHN”和“MAY STREET”计算的匹配和换位得分分别是0.556、0.429和0.571。\n[0114] 可以看出,从相关序列信息块中得到的输入序列“MAY STREET”的换位和匹配得分\n是最高的。然而,“MAY STREET”的换位和匹配得分仅仅由于地址“MAY STREET”的部分\n“STREET”而成为最高的,而部分“STREET”并不是输入地址“ST MARY”的一部分。因为“MAY STREET”的匹配和换位得分值由于词“STREET”而升高,所以在从输入地址“ST MARY”和存储在另一序列信息块中的部分地址“MAY STREET”中去除“ST”和“STREET”之后重新计算匹配和换位得分。针对在从地址“MAY STREET”中去除“STREET”之后得到的“MAY”计算的匹配和换位得分是0.444。\n[0115] 最后,再次对部分地址“AVENUE MARY”、“ST JOHN”和“MAYSTREET”的换位和匹配得分求值,并且具有最高匹配和换位得分的部分地址“AVENUE MARY”被确定为用于查询地理\n编码数据库的最佳匹配候选。\n[0116] 图10示出根据实施例确定用于计算匹配和换位得分的字符匹配计数器和换位计\n数器的示范性代码。如图10中所示,已经将代码划分为四个部分1002、1004、1006和1008,用于说明代码的功能。一开始,在代码的部分1002中,定义transposition_gestalt函数,其以下列各项作为输入:具有m+1个字符的第一串A、具有n+1个字符的第二串B、变量g和p(其用\n来识别串A和串B中一个或多个匹配字符是否是位置对调的)、表示位置彼此邻近的一个或\n多个匹配字符的最小数目的M、表示换位次数的T以及返回嵌套列表的变量ret,其将换位次\n数作为第一元素以及将针对每个换位次数的字符匹配计数器作为它后面的元素。在一个实\n施例中,串A是输入地址并且第二串B是针对输入地址的识别出的部分地址。\n[0117] 多个变量i、j、h、max_h、pa和pb被设置为零。变量i、j和h是迭代子(iterator),\nmax_h存储h的最大值,pa和pb分别是指向串A和串B的指针。如图所示,在代码的部分1004\n中,嵌套循环被用于确定串A和串B中的一个或多个匹配字符的数目(字符匹配计数器(max_\nh))。最内层的循环h具有条件“ifA[i+h]<>B[j+h]”,其按顺序将第一串的每个字符与第\n二串的全部字符进行比较。如果不满足该条件,则中断(break)条件终止最内层循环的运\n行。\n[0118] 考虑具有11个字符(m=10)的第一串A“STREET MAIN”和具有11个字符(n=10)的\n第二串B“MAIN STREET”的例子。位置彼此邻近的一个或多个匹配字符的最小数目(M)被设\n置为3。\n[0119] 第一次运行内部循环h,串A的第一个字符“S”(A[0])与串B的第一个字符“M”(B\n[0])相比较。因为“S”和“M”不匹配,所以最内层的循环h中断,接下来迭代子j的值增加到1,第二次运行内部循环h,第一个字符“S”(A[0])与串B的第二个字符“A”(B[1])相比较。该过程继续,直到内部循环h运行到第六次。在该情形中,j的值是5并且串A的第一个字符“S”(A[0])与串B的第六个字符“S”(B[5])匹配。字符匹配计数器的值(h)增加1。因为条件A[i+h]\n<>B[j+h]不满足,所以最内层循环h不中断。接下来,再次运行最内层循环。在这种情况\n下,第一串A的第二个字符“T”(A[1])与第二串B的第七个字符“T”(B[6])匹配。每次运行最内层循环,迭代子h的值都增加1。该过程继续直到第六个字符“T”(A[5])与第二串B的最后\n一个字符“T”(B[10])匹配。在该情况中,迭代子h的值是6,其被赋给字符匹配计数器(max_h)。因为还没有确定是否有换位,所以当换位次数是0时,字符匹配计数器(max_h)的值是6。\nA的指针pa存储串A的第一匹配字符的位置,即0,并且B的指针pb存储串B的第一匹配字符的\n位置,即5。\n[0120] 接下来,代码的部分1006确定第一串A和第二串B中的匹配字符是否位于不同位\n置,即,匹配字符是否是位置对调的。只有当字符匹配计数器(max_h)大于匹配字符的最小\n数目(M)时才进行该确定。定义条件集合(if(pa<g and pb>=p or pb<p and pa>=g)\nor g in(pa,pa+max_h]or p in(pb,pb+max_h])),其校验串A和串B中的一个或多个匹配字\n符是否是位置对调的。如图所示,这些条件将串A中的第一匹配字符的位置(pa)以及串B中\n的第一匹配字符的位置与transposition_gestalt函数的变量g和p相比较。如果所定义的\n条件中的任何一个条件被满足,那么换位次数的值(T,ret[0])增加1。在上面的例子中,字\n符匹配计数器(max_h)的值6大于最小匹配字符数目(M)的值3。pa、pb、g和p的值分别是0、5、\n0和0。在上面的例子中,所有条件均是假:(pa(0)<g(0)且pb(5)>=p(0):假;pb(5)<p(0)且pa(0)>=g(0):假;g(0)in(pa(0),pa(0)+max_h(6)]:假;以及p(0)in(pb(5),pb(5)+\nmax_h(6)]:假),因此ret[0]的值不增加。提供换位次数和字符匹配计数器的值的变量ret\n[1][ret[0]]按照字符匹配计数器(max_h)增加。在上面的例子中,变量ret[1][ret[0]]增\n加6,以得到值[0,6],即,换位次数是0并且当换位次数是0时字符匹配计数器是6。\n[0121] 最后,在代码的部分1008处,再次调用transposition_gestalt函数。在一个实施\n例中,从串A和B中去除串A和串B中的一个或多个匹配字符以分别得到A’(A’=A[0...pa]+A\n[pa+max_h...m])和B’(B’=B[0...pb]+B[pb+max_h...n])。串A中的第一匹配字符的位置\n增加1,即pa+1赋给g,并且串B中的第二匹配字符的位置增加1,即pb+1赋给p。然后通过A’和B’、pa+1、pb+1以及换位次数(transposition_gestalt(A’,B’,pa+1,pb+1,M,ret[0])再次调用transposition_gestalt函数。在上面的例子中,在从串A和B中分别去除匹配字符\n“STREET”之后,A’的值是“<space>MAIN”并且B’是“MAIN<space>”。pa+1和pb+1的值分别是1和6,并且换位次数是0。因此,通过值(“MAIN”,“MAIN”1,6,3,0)调用transposition_gestalt函数。\n[0122] 第二次调用transposition_gestalt函数,变量i、j、h和max_h再次被设置为0。m和\nn的值是4。g的值是1(pa+1)并且p的值是6(pb+1)。\n[0123] 接下来,再次运行代码的部分1004中的嵌套循环。当再次运行部分1004时,因为\n在"MAIN"中有四个匹配字符,所以字符匹配计数器(max_h)值为4,因为在串A’之前有空格\n<space>,所以串A′中的第一匹配字符M的位置pa是1,并且第一匹配字符M的位置pb是0。\n当运行代码的部分1006时,字符匹配计数器M(4)大于最小匹配字符数目3。因此,检查用于\n确定换位的条件。在这种情况下,用于确定换位的条件——pb(0)<p(6)且pa(1)>=g\n(1)——为真。因此,表示换位次数的变量ret[0]增加1。\n[0124] 最后,变量ret[1][ret[0]]提供与换位次数和与换位次数对应的字符匹配计数\n器:{1,(6,4)},即换位次数是1,当换位次数是0时字符匹配计数器是6,并且当换位次数是1时字符匹配计数器是4。\n[0125] 然后,该得到的字符匹配计数器和换位次数可以用于计算多个部分地址中的每一\n个的匹配和换位得分。\n[0126] 正如以上的讨论,具有最高匹配和换位得分的部分地址被确定为最佳匹配候选。\n在确定了最佳匹配候选之后,利用最佳匹配候选查询地理编码数据库以得到与该输入地址\n相关的地理编码信息。正如以上的讨论,地理编码数据库存储参考数据,即多个地址和与多\n个地址相关的地理编码信息。地理编码数据库将多个地址中的每一个存储在地理编码数据\n库中的、多个存储器地址当中单独的存储器地址中。当查询地理编码数据库时,将读取多个\n存储器地址以从地理编码数据库中取出与最佳匹配候选匹配的地址。\n[0127] 地理编码数据库将参考数据的多个地址按字母顺序存储在地理编码数据库的存\n储器地址中。然而,如果可以编组在一起的两个地址被存储在彼此远离的两个存储器地址\n中的话,那么按字母顺序存储地址就可能会降低地理编码应用的性能。在这种情况下,如果\n查询地理编码数据库,那么就必须读取存储可以编组在一起的两个地址的存储器地址之间\n的每个存储器地址以取出这两个相关地址。因此,存储在地理编码数据库中的地址将被重\n新排列,以使得可以通过读取最小数目的存储器地址从该地理编码数据库中取出匹配最佳\n匹配候选的地址。\n[0128] 在一个实施例中,定义了一组假定条件以便重新排列存储在地理编码数据库中的\n多个地址。第一假定条件是:具有最大数目字符的地址的部分被假定为包含有关该地址的\n最重要信息。第二假定条件是:如果地址的两个部分具有相同长度,那么第一部分,即位于\n该地址开头的地址的部分较为重要。第三假定条件是:可能有替换物的地址的部分——例\n如“STREET”有替换物“ST”——包含较少重要信息。\n[0129] 图11是示出根据实施例用于重新排列存储在地理编码数据库中的多个地址的方\n法的流程图。在一个实施例中,在设计时间在地理编码数据库中重新排列多个地址。\n[0130] 一开始,在块1102处,得到存储在地理编码数据库中的多个地址的地址类型的缩\n写。在一个实施例中,得到存储在地理编码数据库中的地址中的每一个地址的地址类型的\n缩写。\n[0131] 在一个实施例中,存储在地理编码数据库中的多个地址中的每一个都包括地址类\n型以及该地址类型的标识符。地址的地址类型提供有关该地址的类型的信息。例如,地址的\n地址类型可以是“STREET”、“ROAD”和“AVENUE”,它们提供该地址是“STREET”、“ROAD”或者“AVENUE”的信息。\n[0132] 在一个实施例中,地址的地址类型的缩写提供该地址类型的缩写形式。例如,如果\n地址的地址类型是“AVENUE”,那么该地址类型的缩写是“AV”。\n[0133] 地址类型的标识符标识地址并且将该地址与存储在地理编码数据库中的其它地\n址区分开。在一个实施例中,地址类型的标识符可以是标识街道的街道名称。例如,如果地\n址是“AVENUE JOHN”,那么该地址的地址类型就是“AVENUE”并且地址类型的标识符是\n“JOHN”。\n[0134] 在一个实施例中,将得到的地址类型的缩写以及地址类型的标识符组合在一起形\n成与存储在地理编码数据库中的多个地址中的每一个相应的缩写地址。在上面“AVENUE \nJOHN”的例子中,地址类型“AVENUE”的缩写“AV”与地址类型的标识符“JOHN”组合在一起,以得到与地址“AVENUEJOHN”相应的缩写地址“AV JOHN”。\n[0135] 接下来,在块1104处,基于缩写地址的部分中的字符数目重新排序缩写地址的部\n分。在一个实施例中,缩写地址的部分被重新排序以使得在缩写地址中具有最大数目字符\n的部分位于缩写地址的开头。在上面的例子中,缩写地址“AV JOHN”的部分“JOHN”具有最大数目的字符。因此,缩写地址“AV JOHN”被重新排序为“JOHN AV”。\n[0136] 在一个实施例中,对经重新排序的缩写地址执行抽象操作(abstraction \noperation)以得到抽象的(abstract)重新排序的缩写地址。在上面的例子中,抽象的重新\n排序的缩写地址是“JNAV”,对应于经重新排序的缩写地址“JOHNAV”。\n[0137] 接下来,在块1106处,按字母顺序排列所得到的重新排序的缩写地址。在一个实施\n例中,基于重新排序的缩写地址的第一个字符,按字母顺序排列经重新排序的缩写地址。在\n一个实施例中,基于抽象的经重新排序的缩写地址的第一个字符,按字母顺序排列抽象的\n经重新排序的缩写地址。\n[0138] 最后,在块1108处,以与重新排序的缩写地址的排列相应的次序重新排列存储在\n地理编码数据库中的多个地址。在一个实施例中,以与经排列的、抽象的重新排序的缩写地\n址相应的次序重新排列存储在地理编码数据库中的多个地址。\n[0139] 图12A示出根据实施例的示范性地理编码数据库1200。正如以上的讨论,地理编码\n数据库1200存储参考数据1202。参考数据1202可以包括多个地址以及地理编码信息。在一\n个实施例中,地理编码数据库1200包括多个存储器地址并且参考数据存储在地理编码数据\n库1200中的多个存储器地址。如图所示,地理编码数据库1200包括三个存储器地址块1204、\n1206、和1208,其中每个块具有0XF存储器地址。参考数据1202包括存储在存储器地址块\n1204的存储器位置1212处的地址“AVENUE MARY”1210,存储在存储器地址块1206的存储器\n位置1216处的地址“MAY STREET”1214,和在存储器地址块1208的存储器位置1220处的地址\n“ST JOHN”1218。\n[0140] 地址“AVENUE MARY”1210的地址类型是“AVENUE”并且地址类型的标识符是\n“MARY”,地址“MAY STREET”1214的地址类型是“STREET”并且地址类型1214的标识符是\n“MAY”,地址“ST JOHN”的地址类型是“ST”——其是“STREET”的首字母缩写,并且地址类型的标识符是“JOHN”。\n[0141] 地址“AVENUE MARY”1210和“MAY STREET”1214可以编组在一起,因为地址类型\n“AVENUE MARY”1210的标识符——即“MARY”——以及地址“MAY STREET”1214的标识符——即“MAY”——彼此相类似。而且,地址“ST JOHN”1218和“MAY STREET”1214相关,因为地址“MAYSTREET”1214的最长部分——即“STREET”——与其缩写——即“STJOHN”1218中的\n“ST”——是相同的。当利用最佳匹配候选——其与可以编组在一起的这些地址其中之一相\n匹配——查询地理编码数据库1200时,必须读取三个存储器地址块1204、1206和1208以便\n从地理编码数据库1200中取得这些地址。这将明显降低地理编码应用的性能。\n[0142] 因此,地理编码数据库1200被重新排列,以使得利用尽可能小的存储器读取,从地\n理编码数据库1200中取得可以编组在一起的地址1210、1214和1218。\n[0143] 正如以上的讨论,对于重新排列多个地址来说,一开始得到存储在地理编码数据\n库1200中的多个地址1210、1214和1218的地址类型的缩写。地址“AVENUE MARY”1210的地址类型“AVENUE”的缩写是“AV”,地址“MAY STREET”1214的地址类型“STREET”的缩写是“ST”,地址“STJOHN”1218的地址类型——即“ST”——是“STREET”的缩写,因此不改变。\n[0144] 缩写“AV”与地址类型“MARY”的标识符组合,以得到与地址“AVENUEMARY”1210相应的缩写地址“AV MARY”,缩写“ST”与地址类型“MAY”的标识符组合,以得到与地址“MAY STREET”1214相应的缩写地址“MAYST”。正如以上的讨论,地址“ST JOHN”的地址类型——即“ST”——已经是缩写形式,因此“ST JOHN”的缩写地址是“ST JOHN”1218。\n[0145] 接下来,基于缩写地址的部分中的字符数目重新排序缩写地址的部分。缩写地址\n“AV MARY”的部分“MARY”具有最大数目的字符。因此,缩写地址“AV MARY”被重新排序为“MARY AV”。类似地,地址“ST JOHN”和“MAY ST”被分别重新排序为“JOHN ST”和“MAY ST”。\n在对缩写地址重新排序之后,经重新排序的缩写地址是“MARY AV”、“JOHN ST”和“MAY ST”。\n[0146] 在一个实施例中,得到与经重新排序的缩写地址相应的、抽象的重新排序的缩写\n地址。所得到的与重新排序的缩写地址“MARY AV”相应的、抽象的重新排序的缩写地址是\n“MRYAV”,与重新排序的缩写地址“JOHN ST”相应的、抽象的重新排序的缩写地址是“JN ST”,以及与重新排序的缩写地址“MAY ST”相应的、抽象的重新排序的缩写地址是“MYST”。\n[0147] 接下来,按字母顺序排列所得到的抽象的经重新排序的缩写地址。基于首部的一\n个或多个字符——分别是MR、JN和MY,按字母顺序排列抽象的经重新排序的缩写地址\n“MRYAV”、“JNST”和“MYST”。所得到的经排列的、抽象的重新排序的缩写地址是“MRYAV”、“MYST”和“JNST”。\n[0148] 最后,以与抽象的重新排序的缩写地址“MRYAV”、“MYST”和“JNST”的排列对应的次序,重新排列存储在地理编码数据库1200中的多个地址1210、1214和1218。在得到经排列的\n抽象的重新排序的缩写地址之后,将看到,分别与“MRYAV”和“MYST”相应的地址“AVENUE MARY”1210和“MAY STREET”1214可以编组在一起。在一个实施例中,可以编组在一起的地址被存储在邻近的存储器位置。\n[0149] 图12B示出根据实施例存储经重新排列的多个地址的、图12A的示范性地理编码数\n据库1200。如图12B中所示,可以编组在一起的地址“AVENUEMARY”1210和“MAY STREET”1214被存储在存储器地址块1204的相邻存储器地址1212和1222中。这保证当利用最佳匹配候选\n查询地理编码数据库时将仅仅读取两个存储器地址。这可以提供地理编码应用的性能上的\n改进。\n[0150] 图13A示出根据实施例将确定其地理编码信息的示范性输入地址。如图所示,输入\n地址1300是“JOHN SANTE AVE”。在一个实施例中,从用户接收输入地址1300。\n[0151] 图13B-13C示出根据实施例在对图13A的输入地址1300执行词汇分析之后得到的、\n图13A的输入地址的部分。对输入地址“JOHN SANTE AVE”1300执行的词汇分析是解析操作,其后是抽象操作。解析操作在空格处对输入地址“JOHN SANTE AVE”1300进行解析以得到输\n入地址“JOHN SANTEAVE”1300的三个部分:“JOHN”1302、“SANTE”1304和“AVE”1306。\n[0152] 然后,对得到的部分“JOHN”1302、“SANTE”1304和“AVE”1306——它们是在解析操作之后得到的——执行抽象操作。如图13C中所示,对部分“JOHN”1302得到的抽象是“JN”\n1308,对部分“SANTE”1304得到的抽象是“SNT”1310,以及对部分“AVE”1306得到的抽象是“AV”1312。\n[0153] 在得到输入地址1300的部分1302、1304和1306的抽象1308、1310和1312之后,对图\n5B的结节序列树执行模糊搜索以识别出存储在结节序列树500中的多个部分地址——它们\n是输入地址“JOHN SANTE AVE”500的模糊匹配。在一个实施例中,通过将抽象“JN”1308、“SNT”1310和“AV”1312中的每一个的第一个字符与存储在结节序列树500的父节点502-514中的信息的第一个字符相比较,来执行对结节序列树500的模糊搜索。在一个实施例中,将\n抽象“JN”1308、“SNT”1310和“AV”1312的第一个字符与存储在抽象结节序列树600的父节点\n602-614中的信息的第一个字符相比较。\n[0154] 抽象“JN”1308的第一个字符与存储在分支序列534(图5B)的父节点508中的信息\n“JOHN”的第一个字符匹配。因此,分支序列534被遍历,以将存储在与分支序列534关联的分支序列信息块570中的部分地址“SAINT JOHN STREET”识别为输入地址“JOHN SANTE AVE”\n1300的可能匹配中的一个可能匹配。\n[0155] 部分“AV”1312的第一个字符,即“A”,与存储在分支序列540的父节点514中的信息“AVENUE”的第一个字符匹配。分支序列540被遍历以将存储在与分支序列540关联的分支序\n列信息块574中的部分地址“AVENUE MARY”识别为输入地址“JOHN SANTE AVE”1300的一个\n可能匹配。因为存储识别出的部分地址“AVENUE MARY”的分支序列信息块574引用存储地址\n“LAKE ROAD”的分支序列信息块572。因此,地址“LAKEROAD”也是针对输入地址“JOHN SANTE AVE”1300识别出的部分地址中的一个。\n[0156] 部分“SNT”1310的第一个字符“S”匹配存储在父节点504(图5B)中的信息。如图5B\n中所示,存储“S”的父节点504具有分别存储“AINT”和“TREET”的两个子节点550和554。因此,得到对存储在父节点和子节点中的信息的组合的抽象。存储在父节点504“S”和子节点\n550“AINT”中的信息的组合——即,″SAINT"——的抽象是“SNT”。存储在父节点504“S”和子节点550“AINT”中的信息的组合——即,″SAINT"——的抽象是“SNT”。\n[0157] 得到的信息组合的抽象两者——即“SNT”和“STRT”,都与输入地址1300的部分\n“SNT”1310相比较。因为存储在分支序列520的父节点504和子节点550中的、信息组合的抽\n象“SNT”与输入地址1300的部分“SNT”1310匹配,所以遍历包括父节点504和子节点550的分支序列520。因此,存储在与分支序列520关联的分支序列信息块570中的部分地址\n“SAINTJOHN STREET”被识别为输入地址“JOHN SANTE AVE”1300的一个部分地址。\n[0158] 图13D示出根据实施例针对图13A的输入地址1300识别出的部分地址的匹配部分\n地址列表1314。如图所示,列表1314包括通过模糊搜索结节序列树得到的识别出的部分地\n址“SAINT JOHN STREET”、“LAKE ROAD”和“AVENUE MARY”。\n[0159] 接下来,针对识别出的部分地址“SAINT JOHN STREET”、“AVENUEMARY”和“LAKE ROAD”中的每一个计算匹配和换位得分。针对“SAINTJOHN STREET”、“AVENUE MARY”和“LAKE ROAD”计算的匹配和换位得分分别是0.5290、0.24和0。\n[0160] 基于计算出的匹配和换位得分,具有最高得分的识别出的部分地址“SAINT JOHN \nSTREET”被识别为最佳匹配候选。\n[0161] 最后,利用该最佳匹配候选查询地理编码数据库以得到与图13A的输入地址1300\n相关的地理编码信息。\n[0162] 图13E示出根据实施例存储在地理编码数据库中的参考数据1316的一部分。如图\n所示,参考数据的该部分包括最佳匹配候选“SAINT JOHNSTREET”和与最佳匹配候选“SAINT JOHN STREET”相关的地理编码信息1318。与最佳匹配候选相关的地理编码信息1318是输入\n地址1300“JOHNSANTE AVE”的地理编码信息。从地理编码数据库取出地理编码信息1318并\n且将其提供给用户。\n[0163] 上面示出的软件组件有形地在计算机可读存储介质上存储为指令。术语“计算机\n可读存储介质”应当采取包括存储一个或多个指令集的单个介质或者多个介质。术语“计算\n机可读存储介质”应当采取包括能够承受一组物理改变以物理存储、编码或者以另外方式\n承载用于由计算机系统运行的指令集的任意物理物品,所述指令集导致计算机系统执行这\n里描述、表示或者示出的任何方法或者过程步骤。计算机可读存储介质的例子包括但是不\n局限于:磁介质,诸如硬盘、软盘和磁带;光介质,诸如CD-ROM、DVD和全息设备;磁光介质;以及专门配置为存储和运行诸如专用集成电路(“ASIC”)、可编程逻辑器件(“PLD”)以及ROM和RAM设备的硬件设备。计算机可读指令的例子包括诸如由编译器产生的机器代码,以及包含\n由计算机使用解释器运行的高级代码的文件。例如,可以使用Java、C++或者其它面向对象\n的编程语言和开发工具实现本发明的实施例。本发明的其它实施例可以取代机器可读软件\n指令在硬线电路中实现或者结合机器可读软件指令实现。\n[0164] 图14是示范性计算机系统1400的框图。计算机系统1400包括处理器1402,其运行\n存储在计算机可读存储介质1422上的软件指令或者代码以执行上面所示的本发明的方法。\n计算机系统1400包括介质读取器1416,用于从计算机可读存储介质1422中读取指令并且将\n指令存储在存储器1404中或者随机存取存储器(RAM)1406中。存储器1404提供较大空间用\n于保存静态数据,其中至少一些指令可以被存储用于今后运行。所存储的指令可以进一步\n被编译以产生这些指令的其它表示并且将其动态地存储在RAM 1406中。处理器1402从RAM \n1406中读取指令并且根据指令执行动作。根据本发明的一个实施例,计算机系统1400还包\n括:输出设备1410(例如,显示器),用于将运行结果的至少一些作为输出——包括但并不限\n于视觉信息——提供给用户;以及输入设备1412,用于利用输入数据的装置提供给用户或\n者其它设备和/或以另外的方式与计算机系统1400交互。输出设备1410和输入设备1412中\n的每一个都可以通过一个或多个附加的外围设备相连,以便进一步扩展计算机系统1400的\n能力。可以提供网络通信器1414以将计算机系统1400连接至网络1420并且依次连接到其它\n设备——这些设备连接到例如包括其它客户端、服务器、数据存储和接口的网络1420。计算\n机系统1400的模块经由总线1418互连。计算机系统1400包括数据源接口1408,用于访问数\n据源1424。可以经由以硬件或者软件实现的一个或多个抽象层访问数据源1424。例如,可以\n通过网络1420访问数据源1424。在一些实施例中,可以经由诸如语义层之类的抽象层访问\n数据源1424。\n[0165] 数据源是信息资源。数据源包括启用数据存储和检索的数据的源。数据源可以包\n括数据库,诸如关系数据库、交易数据库、层级数据库、多维数据库(例如OLAP)、面向对象的数据库等等。更多数据源包括制表数据(例如,电子表格、划界文本文件)、通过标记语言标\n记的数据(例如,XML数据)、交易数据、未结构化数据(例如,文本文件、抓屏)、层级数据(例如,文件系统中的数据、XML数据)、文件、多个报告以及可通过由基础软件系统(例如ERP系\n统)等等产生的已建立协议访问的任意其他的数据源,协议诸如开放数据库连接(ODBC)。数\n据源还可以包括这样的数据源:其中数据没有被有形地存储或者以另外方式地短暂存储,\n诸如数据流、广播数据,等等。这些数据源可以包括关联的数据基础、语义层、管理系统、安全性系统等等。\n[0166] 在上面的描述中,阐述了大量具体细节以提供对本发明的实施例的全面理解。然\n而,本领域的技术人员将看到,可以在没有一个或多个所述具体细节的条件下实践本发明,\n或者利用其它方法、组件、素材等等来实践。在其它实例中,没有示出或者详细描述公知操\n作或结构以避免模糊了本发明的方面。\n[0167] 尽管这里示出且描述的过程包括一系列步骤,但是将理解,本发明的不同实施例\n不局限于这些示出的步骤次序,因为一些步骤可能以不同次序发生,一些与不同于这里所\n示和描述的其它步骤同时发生。此外,不是所示出的所有步骤都需要来实现依照本发明的\n方法。而且,将理解,所述过程可以结合这里示出和描述的装置和系统以及结合未示出的其\n它系统来实现。\n[0168] 本发明的实施例的上述描述和图示——包括抽象中所描述的——并不意为穷举\n性或限制本发明为所公开的准确形式。尽管这里出于说明性目的描述了本发明的具体实施\n例和例子,但是如本领域技术人员将看到,在本发明的范围内各种等效修改是可能的。根据\n上面的具体说明可以进行这些修改。而是,本发明的范围将由后面的权利要求确定,将依照\n所建立的权利要求结构的声明来解释权利要求。
法律信息
- 2017-09-12
- 2014-05-07
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201110093834.8
申请日: 2011.04.14
- 2012-10-17
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
1996-10-09
|
1994-10-13
| | |
2
| |
2008-10-08
|
2006-02-28
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |