CN107567621B - 用于执行数字搜索的方法、系统和计算机程序产品 - Google Patents

用于执行数字搜索的方法、系统和计算机程序产品 Download PDF

Info

Publication number
CN107567621B
CN107567621B CN201680025936.7A CN201680025936A CN107567621B CN 107567621 B CN107567621 B CN 107567621B CN 201680025936 A CN201680025936 A CN 201680025936A CN 107567621 B CN107567621 B CN 107567621B
Authority
CN
China
Prior art keywords
key
sub
index
search
index table
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680025936.7A
Other languages
English (en)
Other versions
CN107567621A (zh
Inventor
厄尔扬·韦斯特哥特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Visilo Ltd.
Original Assignee
Orjan Vestgote Technology AB
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Orjan Vestgote Technology AB filed Critical Orjan Vestgote Technology AB
Publication of CN107567621A publication Critical patent/CN107567621A/zh
Application granted granted Critical
Publication of CN107567621B publication Critical patent/CN107567621B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24549Run-time optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • G06F16/902Indexing; Data structures therefor; Storage structures using directory or table look-up using more than one table in sequence, i.e. systems with three or more layers

Abstract

用于执行与生物识别信息相关的数字搜索的方法和系统,该方法包括:生成表示待搜索项的生物识别特征的主搜索关键字;将主搜索关键字划分成至少两个子关键字,每个子关键字包括预定数量的位;获得索引表的集合,每个索引表包括多于一个的关键字值,每个关键字值与相应的索引值相关联,其中集合中的索引表的数量等于主搜索关键字内的子关键字的数量;在所述索引表的集合的第一个中识别匹配主搜索关键字的第一子关键字的至少一个关键字值;对每个所识别的关键字值获得指向下一索引表中的关键字值的有限部分的相应索引值;在所述下一索引表的所述有限部分中识别匹配主搜索关键字的下一个子关键字的至少一个关键字值;重复获得索引值并和搜索下一索引表的有限部分的步骤,直到主搜索关键字的所有子关键字都被搜索为止;当搜索了主搜索关键字的最后一个子关键字时返回结果。

Description

用于执行数字搜索的方法、系统和计算机程序产品
技术领域
本发明涉及用于执行与生物识别信息(biometric information)相关的数字搜索的方法、系统和计算机程序产品。
背景
在现今的大量应用中使用生物识别信息。诸如指纹、掌纹、虹膜表示、面部识别、DNA、语音样本等的生物识别标识(Biometric identifier)可以用于诸如识别、认证等的几个目的。
当生成这种信息的数据表示时,它常常导致非常大量的数据。大于25千兆字节的数据表并不罕见。因此,在包括生物识别信息的这样的数据库内的搜索可能是耗时的,以及要求高水平的处理能力。
传统上,通过使用在排序的索引表内的数字搜索关键字来执行在生物识别数据库内的搜索。存在其他类型的搜索算法,例如线性搜索,其中使用索引或指针对照存储在索引表中的条目值来测试关键字,使索引或指针以1的步长递增或递减,直到一个或更多个匹配条目被找到为止,或直到索引表中的所有条目直到整个索引表被搜索时没有任何匹配的条目为止。表常常放置在能够包括大量数据的主存储器中。现代计算机和服务器常常可以访问几个相关的处理单元(核心),每个处理单元包括快速存储器的小区域,被称为高速缓存存储器。此外,诸如公共随机存取存储器(RAM)的主存储器可以由相关处理单元共享。因为高速缓存存储器在存储器容量方面受到限制,假定搜索需要被重定向到主存储器,在大数据量内执行搜索是耗时的。源自不同核心中执行的线程的对主存储器的多于一个的同时或几乎同时发生的查询可能明显降级包括主存储器的计算机或服务器的性能。
例如,现代处理器(如Intel i7或类似处理器)可以包括4个核心,每个核心具有8MB的高速缓存存储器和32GB的共享主存储器。包括生物识别信息的数据库可以具有大约20GB或有时更大的大小。包括主关键字值的索引表与数据库相关联。每个主关键字值与指向在数据库中包括的信息的索引值相关联。主搜索关键字通常包括32位,但可以小于或大于32位。为了执行与生物识别信息相关的搜索,通常在索引表中执行对32位主搜索关键字的数字搜索。如果索引表包括109个关键字值,这在生物识别应用中并不罕见,则数字搜索内的大多数步骤将访问主存储器,因为对在搜索中的每个子步骤中所搜索的关键字值、索引和/或相关数据分配的存储器的大小大于高速缓存存储器的大小。
现代CPU具有3种不同类型的高速缓存:L1、L2和L3高速缓存。根据制造商的芯片设计,L1高速缓存通常可以在每时钟周期上为CPU提供数据。L2高速缓存通常能够每第三周期将数据馈送到L1高速缓存,而L3高速缓存通常只能每12个周期馈送数据。三个级别基于CPU需求来交换数据。对于Intel i7-4770 CPU,L1数据高速缓存为32千字节,L2高速缓存为256千字节,以及L3高速缓存为8兆字节。
最后,主存储器通常可以每50个周期或以百分之2的效率将数据馈送给L3高速缓存一次。这就是为什么甚至对于单个核心应用以对主存储器的访问被最小化的方式来访问存储器也是如此重要。
在大多数运行时间库中(例如,在Microsoft的C运行时间库中)实现所谓的bsearch方法。在记录的排序数组上应用的bsearch以如下方式来操作,数组以最初等于数组大小的一半的步长大小被单步调试。对于在排序数组中向前或向后的每一步,步长大小除以2。由于CPU不得不等待将从主存储器被馈送的数据,使用大于高速缓存大小的数组大小的应用将使性能降级。数组大小越大,应用将越多地遭受这种降级。
大型服务器可以包括多达64或128个核心或更多核心。当在大型数据库中执行数字搜索时,这样的服务器的性能将大大降级,不仅是由于核心必须如上所述等待来自主存储器的数据,而且当在同一核心中或者在其他核心中并行地执行的搜索线程中的查询在访问不包含在核心的高速缓存存储器中的地址时会发生冲突时。
在存储器代码和数据之间共享在高速缓存存储器中的存储器空间。在高速缓存存储器内包含的地址空间通常不在软件控制下。
在US 2006/0104493 A1中描述了用于匹配两个生物识别图像(biometric image)的方法和系统。生成用于第一生物识别图像的索引表。选择第二图像,并且生成关于第二图像的每个细节的多个图案。然后通过使用对于每个细节的所生成的图案访问所生成的索引表来执行对匹配图案的搜索并然后生成关于第二图像的匹配分数。
在US 6711562 B1中公开了用于提高搜索性能的高速缓存敏感搜索树(CSS-树)索引结构。描述了一种用于定位存储在关键字值的排序数组中的特定关键字值的搜索树索引系统和方法。
从公开了用于搜索包括与多个(a plurality of)指纹相关的数据的数据库的方法的WO 2008/030166和公开了用于通过访问检索表来进行数据检索的装置、数据结构和记录介质的EP 1156432中已知另外的现有技术。
在WO 01/65418 A1中公开了用于基于高速编索引来访问信息的另一种方法。定义资源(诸如,图像、文档或类似物)的搜索串(在这种情况下是URL或URI)被划分为段,数学运算应用于每个段,并且因而得到的数值(即关键字)用作查找表中的索引。使用查找表的一个缺点在于必须在索引表中表示所有可能的值。例如,如果关键字值为8位,则表大小必须为28个条目。如在WO 01/65418 A1中提到的,如果使用MD5来产生关键字值,则必须使用大小2128的表,这实际上是不可能的。除了MD5之外,还提到用于产生关键字的其它方法,诸如CRC4、CRC8和CRC12。这些其他方法中均无法保证2个不同的输入串不会因此生成相同的关键字。如果从不同的串得到相同的关键字,则必须添加手段来在返回搜索的结果之前区分正确的资源。这些缺点、表大小和关键字唯一性会导致性能降级。此外,WO 01/65418 A1执行1:1搜索。
概述
实现用于执行数字搜索的、克服或至少减轻当访问大于高速缓存大小的排序数据结构时上面提到的缺点的方法将是有利的。特别是,在生物识别信息内实现时间高效的搜索将是合乎需要的。
为了更好地处理这些所关切的事中的一个或更多个,提供了包括在独立权利要求中限定的特征的方法、系统和计算机程序产品。在从属权利要求中限定优选的方面。
根据第一方面,提供了一种用于执行与生物识别信息相关的数字搜索的方法。该方法包括:生成主搜索关键字的集合,每个关键字表示待搜索项的生物识别特征(biometric feature);将主搜索关键字中的每个划分成至少两个子关键字,每个子关键字包括预定数量的位;获得索引表的集合,每个索引表包括多于一个的关键字值,每个关键字值与相应的索引值相关联,其中该集合中的索引表的数量等于在主搜索关键字内的子关键字的数量;在所述索引表的集合中的第一索引表中识别与主搜索关键字的第一子关键字相匹配的至少一个关键字值;对每个所识别的关键字值获得指向下一索引表中的关键字值的有限部分的相应索引值;在所述下一索引表的所述有限部分中识别与主搜索关键字的下一个子关键字相匹配的至少一个关键字值;重复获得索引值和搜索下一索引表的有限部分的步骤,直到主搜索关键字的所有子关键字都被搜索为止;当搜索了主搜索关键字的最后一个子关键字时返回结果。
主搜索关键字可以被看作公开了表示单独的特征的多个子关键字的位和/或字节的序列,或者被看作由例如在字符或字节串上执行的一些操作所产生的位/字节的序列。多个操作可以在生成搜索关键字时执行或被执行用于修改已经获得的关键字。主搜索关键字可以被划分成多个子关键字。因此,子关键字是包括来自主搜索关键字的一个或更多个位的主搜索关键词的一部分。第一子关键字至少包括主搜索关键字的初始位。每个子关键字中的位的数量可改变。
第一方面基于以下实现,将索引表分成若干个表以及执行将主搜索关键字划分成子关键字可以便于诸如在生物测量学领域中在大量数据内的时间高效的搜索。找到对主搜索关键字的匹配记录可以通过将关键字划分成若干子关键字来实现,这些子关键字与在多于一个的后面的索引表内的关键字值进行比较。如果在表中找到对子关键字的匹配关键字值,则与该关键字值相对应的索引值给出指向在下一表中的关键字值的有限部分的指针。以这种方式,可以仅在便于在有限大小的存储器内执行的搜索的关键字值的有限部分内执行对于子关键字的搜索,这常常是诸如高速缓存存储器的本地存储器资源的情况。高速缓存存储器可以例如具有8MB的大小。
因此,通过这样的方法,可以通过使用有限的高速存储器以时间高效的方式执行数字搜索,促进高性能和高用户友好程度。
此外,本文公开的方面可以用于便于在生物识别信息之外的数字搜索,其涉及信息量非常大的其他类型的数据。
当前的应用描述了以如下方式间接地影响有限存储器资源(诸如高速缓存)的使用的方法,该方式使得由于例如高速缓存未命中(cache miss)和可能的RAM冲突而导致的性能降级被最小化。
主搜索关键字可以包括位的序列,并且在划分主搜索关键字时生成的每个子关键字是在主搜索关键字中的位的子集。
该方法可以被重复用于在一起表示诸如指纹、掌纹、虹膜表示、DNA或类似物的生物识别标识的主搜索关键字的集合内的每个主搜索关键字。常常为例如来自指纹的图像的生物识别标识生成多于一个的搜索关键字,每个关键字表示属于该标识的一个或更多个特征。因此,为了找到最可能的匹配,需要搜索多个主关键字。因此,在生物识别数据库中,必须允许许多相同的关键字,因为可以在一个或几个人的数据中找到几个生物识别特征,每个生物识别特征由一个关键字描述。在另一方面,如果生物识别特征不导致所有可能的数值存在,则索引表将更小,如果表用于数字搜索而不是用作查找表的话。
主搜索关键字的第一子关键字可以包括最高有效位,并且关键字的最后一个子关键字包括最低有效位。因此,搜索中的第一步骤涉及最高有效位。
可以基于可读语句、可读字和/或至少一个数字因子来生成主搜索关键字。它可以包括描述生物识别图像内的特定点的特性,即所谓的特征点。例如,特性可以从如何相对于至少一个相邻特征点来定位特定的特征点的方面来描述该特定的特征点。
生成主搜索关键字还可以包括使在关键字中包括的多个位至少部分地交错。
有限部分的范围可以由获得的对应索引值和附加的索引值来定义。来自与在前的表中的索引值相关联的匹配关键字值的指针指向用于在下表中搜索的起始点,因此确定有限部分的起始点。来自在前的表的附加索引值指向有限部分的结束点。因此,有限部分的范围由来自在前的索引表的与匹配关键字值相关联的索引值以及附加索引值定义。
除了对应于最后一个子关键字的有限部分之外,第一索引表的大小和每个有限部分的大小可以至多为二的相应子关键字中的位的数量次方。因此,每个子关键字中的位的数量确定对于相应子关键字的匹配所必须搜索的条目的最大数量。由于重复的关键字的出现,对应于最后一个子关键字的有限部分可以小于、大于或等于二的在最后一个子关键字中的位的数量次方。
例如,第一子关键字的位的预定数量是X,其中X=[1..64],优选地X=[1..16]或X=[1..8],以及第一索引表包括至多2X个值,并且下一个子关键字的位的预定数量是Y,其中Y=[1...64],优选地Y=[1..16]或Y=[1..8],以及除了对应于最后一个子关键字的有限部分之外,下一索引表的有限部分包括至多2Y个值,从而最小化用于在所述索引表集合的第一表中识别与第一子关键字匹配的关键字值的步骤以及用于搜索下一索引表的有限部分的步骤所需的存储器访问的次数。因此,通过将每个子关键字中的位的预定数量限制为最多64位,优选地16位或8位,索引表的大小被限制,并且对于找到在所需的相应表中的子关键字的匹配所需的存储器访问被最小化。
X和Y的范围的一些示例是:X=[1..15,17..64],优选地X=[1..15],Y=[2..7,9..64],优选地Y=[2..7,9..16]。另外,X可以等于16,并且Y可以等于8。X可以小于Y,或等于或大于Y,优选地X>Y、X=Y、Y=X/2或Y=X/4。
在当前的方法中,至少在最后一个索引表中使用数字搜索,允许相同的关键字属于同一个人或不同的人。通常,平坦指纹或滚动指纹将产生几百个主搜索关键字。隐性指纹(即,在犯罪调查期间收集的完全或滚动指纹的片段)可以包含低至5-10个主搜索关键字。
返回的结果可能是因而产生的记录集。所获得的结果集可能为空或包含一个或更多个匹配记录。生物识别特征很可能导致许多或大量的已发现特征,因此导致1:N搜索,其中N是从一个或几个人产生的已发现特征的集合。因此,生物识别特征的输入集合将导致数据库记录的输出集合N,其中N等于零或大于零。
该方法连同附加过程可以在单个处理单元上同时执行。在同一个处理单元、核心上的并行执行可能需要高速缓存存储器被共享,并因此导致性能降级。然而,当使用上面公开的方法时,由于能够在有限大小的存储器(诸如大小为8MB的高速缓存存储器)内执行搜索,因此使同一个核心上的并行执行成为可能。
索引表可以用作查找表。每个索引表可以是经排序的索引表。
根据第二方面,提供了一种用于执行与生物识别信息相关的数字搜索的系统。该系统包括:至少一个处理单元,其包括本地存储器资源,该处理单元适合于接收和/或生成主搜索关键字,其中每个主搜索关键字被划分成至少两个子关键字,每个子关键字包括预定数量的位;连接到至少一个处理单元的主存储器,该主存储器包括生物识别信息数据库;包括关键字值的索引表,每个关键字值与相应的索引值相关联,其中索引表的数量等于在将要搜索的主搜索关键字内的子关键字的数量,在所述索引表中的索引值指向在下一索引表中的关键字值的有限部分以及在最后一个索引表中的索引值指向在生物识别信息数据库中的位置。
有限部分的范围可以由所获得的对应的索引值和附加索引值来定义。
第一索引表的大小可以最多是二的在第一子关键字中的位的数量次方。此外,除了与最后一个子关键字相对应的有限部分之外,每个有限部分的大小最多为二的在相应子关键字中的位的数量次方。因此,每个子关键字中的位的数量确定对于相应子关键字的匹配所必须搜索的条目的数量。每个子关键字的位的预定数量可以如上面关于所描述的方法所公开的。
例如,第一子关键字的位的预定数量是X,其中X=[1..64],优选地X=[1..16]或X=[1..8],以及第一索引表包括至多2X个值,并且下一个子关键字的位的预定数量是Y,其中Y=[1...64],优选地Y=[1..16]或Y=[1..8],并且除了对应于最后一个子关键字的有限部分之外,下一索引表的有限部分包括至多2Y个值,从而最小化对于在所述索引表集合的第一表中识别与第一子关键字匹配的关键字值的步骤以及对于搜索下一索引表的有限部分的步骤所需要的存储器访问的次数。因此,通过将每个子关键字中的位的预定数量限制为最多64位,优选地16位或8位,索引表的大小被限制,并且对于找到在所需的相应表中的子关键字的匹配所需的存储器访问被最小化。
X和Y的范围的一些示例是:X=[1..15,17..64],优选地X=[1..15],Y=[2..7,9..64],优选地Y=[2..7,9..16]。另外,X可以等于16,以及Y可以等于8。X可以小于Y,或等于或大于Y,优选地X>Y、X=Y、Y=X/2或Y=X/4。
该系统还可以包括用于输出从在系统中执行的数字搜索得到的生物识别信息的输出单元。它还可以包括用于向用户传达信息的接口,使得来自所执行的生物识别搜索的结果可以被呈现给用户。
本地存储器资源可以包括可以具有8MB的大小的至少一个高速缓存存储器。
根据第三方面,提供了一种计算机程序产品,其包括当在处理单元上被执行时适合于执行本文描述的方法的计算机程序代码部分。
附图的简要说明
现在将参考附图在下面的说明性和非限制性的详细描述中更详细地描述这个和其它方面。
图1a示出了根据现有技术的参照存在于RAM中或辅助存储器上的数据库的索引表。
图1b示出了根据现有技术的与数据库记录相关地存储的关键字值的数据库。
图2示出了划分成若干部分的主搜索关键词的示意图。
图3示出了根据本申请的方面的用于执行数字搜索的方法中的步骤的示意表示。
图4示出了涉及根据本申请的方面的用于执行数字搜索的方法中的步骤的另外的细节的示意表示。
图5示出了根据本申请的方面的索引表的示意表示。
图6示出了根据本申请的方面的索引表的示意表示。
详细描述
根据现有技术,通过使用经排序的索引表来执行在大数据库(诸如包括生物识别信息的数据库)中的执行数字搜索。在图1a中看到与数据库相关的这种索引表的示例。索引表包括多个关键字值,并且每个关键字值与索引值相关联,索引值指向被包括在数据库内的信息。注意,图1a中的关键字和索引值的数量仅限于用于说明性目的。被包括在涉及生物识别信息搜索的索引表中的关键字值的数量可以高达109或甚至更多。
根据现有技术,在索引表内的关键字值当中搜索对主搜索关键字的匹配。当找到对主搜索关键字的匹配时,相应的索引值指向在生物识别数据库内的生物识别信息记录,并从而可获得相关生物识别信息,诸如多个可能的匹配。
在图1b中看到根据现有技术生物识别信息可以如何存储在数据库中的另一个示例。在这种情况下,关键字值直接与生物识别数据相关地存储在诸如RAM的主存储器中。如之前关于图1a所提及的,在图1b中的关键字值和数据字段仅限于用于说明性目的。在图1b所示的示例中,对于具有对生物识别数据的索引值和指针没有需要,这是由于关键字值本身已经与相关数据相关联。然而,在包括大量生物识别数据的这样的数据库内搜索是耗时的。
可以根据环境以多种方式获得主搜索关键字。如果要执行对特定的字或语句(即,字符串)的搜索,则可以通过应用散列算法来获得一个或更多个主搜索关键字,该散列算法可以给出一个或更多个搜索关键字,每个搜索关键字包括例如32或64位数。如果要搜索的对象已经包括数字对象,则可以通过连接数字对象来获得一个或更多个主搜索关键字。散列算法或类似算法也可以用在数字搜索对象上或在所获得的搜索关键字上,例如用于压缩数据。注意,可以使用本领域中的技术人员已知的用于获得主搜索关键字的其他方法。此外,生成主搜索关键字可以包括与被包括在关键字中的多个位至少部分地交错。
在本申请中的方面涉及在生物识别信息中搜索,该生物识别信息指与个体特性相关的信息。这样的特性的示例包括但不限于:指纹、脸部的特征、DNA、掌纹、手掌几何特征、虹膜或视网膜方面、气味、嗓音、步态、笔迹等。
作为示例,将简要描述生成表示指纹特性的主搜索关键字的集合。通过使用适当的成像设备来生成指纹的图像。图像中的参考特征点可以通过使它与相邻特征点相关联来描述。参考特征点具有例如由x/y坐标描述的位置和方向。因此,在参考特征点的预定半径内的特征点可以通过极坐标(即,通过离参考特征点的距离和角度)来描述。因此,可以通过包括对按照角度和距离表示的多个相邻特征点的关系来获得表示参考特征点的主搜索关键字。为了限制关键字的大小,可以使用几个相邻特征点。此外,可以通过分别仅使用最短和最长相邻距离来减小大小。此外,可以使用用于压缩所生成的关键字的散列算法。
因此,为了使指纹与数据库中的所存储的指纹匹配,主搜索关键字的集合必须为指纹图像内的多个参考特征点而生成,且然后与所存储的关键字匹配。在当主搜索关键字的集合被搜索到时数据库内导致最大命中次数的指纹是对匹配的最可能的候选者。
以下将关于图2-4描述本申请的方面。
主搜索关键字可以被看作公开了表示单独的特征的多个子关键字的位和/或字节的序列,或者被看作从例如在字符或字节串上执行的一些操作产生的位/字节的序列。如上面提到的,多个操作可以在生成搜索关键字时被执行或被执行用于修改已经获得的关键字。主关键字的示例在图2中示出。图2中的关键字包括5个字节,即40位。注意,关键字可以包括多于或少于5个字节。第一个字节可以包括最高有效位,而最后一个字节可以包括最低有效位,但其不是必需的。
主搜索关键字可以被划分成适当数量的子关键字。例如,第一子关键字可以包括16位的分区,即字节0和字节1,第二子关键字可以包括字节2,第三子关键字包括字节3以及第四子关键字包括字节4。这只是如何划分关键字的示例。它可以根据诸如关键字的大小、高速缓存存储器大小等的情况以多种方式被执行。
索引表(诸如图1a所示的索引表)通过将包括在其中的关键字值分成多个部分来被分成多个表,部分的数量对应于搜索关键字的子关键字的数量。因此,在关键字被划分成四个子关键字的上面提到的情况下,关键字值被分成四部分,且因此索引表的数量是四,而不是一个包括所有关键字值的大索引表。因此,子关键字的数量等于索引表的数量。
每个子关键字以与它们出现在主搜索关键字中的相应的顺序对应于索引表。因此,主搜索关键字的第一子关键字(即至少包括主搜索关键字的初始位的子关键字)对应于第一表(表1),第二子关键字对应于第二表(表2),等等,这取决于子关键字的数量。
除了与最后一个子关键字对应的有限部分之外,第一索引表的最大大小以及在第一表之后的每个表中要被搜索的有限部分的大小对应于相应的子关键字的位的数量。第一表的大小和每个有限部分的大小被表示为当找到与相应子关键字的匹配时要搜索的条目的数量。
对于每个表,最大大小对应于在相应子关键字中的位的数量,因为第N个索引表的最大大小是(2N1)*(2N2)*(2N3),...*(2NN),其中N1、N2、N3...NN是在第一、第二、第三...第N个子关键字中的位的数量。例如,如果主搜索关键字被分成具有8位的三个子关键字,则第一索引表的大小最多为(28)1=256个条目,第二索引表的大小最多(28)2=256*256,以及第三索引表的大小最多为(28)3=256*256*256。如果第一子关键字是16位,并且后面的第二和第三子关键字各自都是8位,则第一索引表的大小最多为(216)=65536个条目,第二索引表的大小最多为(216)*(28)=65536*256,以及第三索引表的大小最多为(216)*(28)*(28)=65536*256*256。因此,索引表的大小变大,并且在这样的大表内执行对匹配的搜索需要在存储器和处理能力方面的大容量。
当要搜索的部分在条目数量方面被限制时,可以有效地执行对每个子关键字的匹配值的搜索。将每个子关键字中的位的数量保持到有限数量也限制要被搜索的值的范围。因此,当对子关键字的匹配值执行搜索时,搜索被限制到在每个表中的有限量的条目,并且因此获得最小化所需的存储器访问的数量。由此,可以在具有有限容量的存储器(诸如高速缓存存储器)中执行搜索。
第一子关键字中的位的数量为X。因此,对于第一索引表,要被搜索的条目(值)的数量至多为2X。如上所述,X可以从1-64位变化,但优选地在1-16位或1-8位的范围内。
在图3中示出被划分的索引表。如在上面给出的示例中,如果主搜索关键字的第一子关键字包括16位,表1将包括216=65536个条目。然而,第一子关键字或其他子关键字中的任一个可以包括小于16位,通常8位。在这种情况下,对应于包括8位的子关键字的表将包括28=256个条目。
如果表1具有65536个条目的大小,则表1仅需要保存指向表2的索引值,因此可以用作简单的查找表。如果表1小于65536且关键字大小为16位,则表1必须包含关键字和相关联的索引值。由于表1的有限的大小,因此在这些值当中执行的数字搜索可以在高速缓存存储器内被执行。
类似地,如果第一子关键字是8位宽,则对应的表具有最多256个条目的大小。如果表有256个条目,则表可以用作查找表。如果在数据库中不存在子关键字值,则这个不存在的关键字可以由指针值空(NULL)或在数据库中不存在的任何其他值表示。将第一索引表的内容限制到仅存在于数据库中的那些值也是可能的,然而更耗时的。这节省了可忽略的存储器的量,但是使用更耗时的数字搜索。然而,当索引表的大小随着较不重要的子关键字增加时,对于查找表所需的存储器的增加的量可能不再是可忽略的,且在这些情况下,数字搜索可能是优选方法。
存在对于使有限部分变得小的原因。例如,使用索引表表1作为查找表使每个条目的大小变小,因为条目只包含对下一个表的索引值。保持有限部分尽可能小使在高速缓存中不包含的存储器访问的数量最小化。此外,在相同处理单元(核心)上的其他线程或进程的并行执行需要与这些线程或进程共享高速缓存。如果由所有并行活动访问的存储器元件保持尽可能最小,则缓存未命中的速率因此将保持尽可能最低,又将总体性能保持在更高的水平处。
此外,为了与图1a和图1b相比,减小根据图3的索引表的条目的数量,除了最后一个表中的可能包含重复的关键字值的有限部分之外,关键字在所有有限部分中都是唯一的。如果不同的人具有相同的生物识别特征,或者一个人具有位于不同位置处的两个或更多个相同的特征。这样的生物识别特征可以由相同的主搜索关键字表示。当将主搜索关键字分成子关键字(例如4个子关键字)时,子关键字的顺序将是相同的。然而,为了利用此生物识别特征来检索所有人,在最后一个索引表中的有限部分必须包含重复的子关键字值,每个值具有对不同的人的数据库引用。因此,当由特征的子关键字表示的生物识别特征源于不同的人时,或者当相同的生物识别特征被发现在不同位置处从同一人得到时,需要重复的值。
匹配的关键字值与指向在下一表(表2)内的关键字值的索引值相关联。搜索在搜索关键字中的下一个子关键字(其在上述示例中为字节2)将仅在表2中的有限部分内被执行,该限制由被来自前一表(表1)的索引值指向的关键字值确定。图3中的箭头表示从索引值到下一表中的关键字值的指针。对主搜索关键字的所有子关键字重复相同的过程。当搜索表2中的字节2的匹配关键字值时,搜索仅在先前提到的有限部分内被执行。
有限部分被来自在前的表中的指针限制。来自与在前的表中的索引值相关联的匹配关键字值的指针指向用于在之后的表中搜索的起始点,因此确定有限部分的起始点。来自在前的表的附加索引值指向有限部分的结束点。优选地,由于在索引表中的匹配关键字值+1与指向在下一表中的未被包括在要被搜索的有限部分中的第一条目的索引值相关联,因此来自与在前的表中的索引值相关联的匹配关键字值+1的指针确定有限部分的结束点。因此,在与匹配关键字值相关联的索引值之后的索引值可以确定有限部分的结束点。因此,有限部分的范围由来自在前的索引表中的与匹配关键字值相关联的索引值以及附加索引值限定。
与表2中的匹配关键字值相关联的索引值指向在下一表(表3)中的关键字值。在由来自前一表(表2)的索引值确定的表3中的关键字值的有限部分内执行对搜索关键字的第三子关键字(字节3)的搜索。在由字节4表示的示例中,在表4中关于主搜索关键字的最后一个子关键字执行相应的搜索。
在图4中示出表2和表3如何相关的一个示例。从表1中的匹配获得的索引值将搜索限制到包括在表2中的256个条目(值)的部分,假定子关键字2是8位。在关键字值N中找到对于主搜索关键字的第二子关键字(即字节2)的匹配。关键字值N与指向在表3内的有限部分A的起始点的索引值相关联。关键字值N+1与指向在表3中的未被包括在有限部分A中的第一入口点的索引值相关联。
因此,有限部分A的范围从由来自与在前的索引表中的匹配关键字值N相对应的索引值的指针指向的条目一直到但不包括由来自对应于匹配关键字值加一(N+1)的索引值的指针指向的条目。由于在图4的示例中子关键字包括8位,因此在前一个表中由匹配指向的有限部分是256个条目,这是因为28=256。因此,在这样的有限部分内的搜索可以在小存储器区域中(诸如在高速缓存存储器内)执行。因此,在索引表的有限部分A中的条目的数量2Y,其中相应的子关键字具有数量为Y的位。子关键字中的预定的位的数量Y可以如前面所提到的从1-64位变化,但优选地在从1-16或1-8位的范围内。
第一子关键字的大小X可以等于后面的子关键字的大小Y,或者X可以小于或大于Y。由于第一子关键字可以包括最高有效位,它可以优选地具有相同尺寸或大于后面的子关键字。
如果在上面提到的表的这样的有限部分中的关键字值的数量等于256,并且子关键字的大小是8位,并且重复的关键字不被允许,则该表可以用作查找表。如果对于8位子关键字,值的数目不是256,则必须使用数字搜索来定位子关键字的位置(如果它存在)。通常,用于将索引表用作查找表的以下规则必须适用:索引表的大小必须为2N,其中N为相应子关键字中的位的数量。
执行在索引表内的搜索,直到搜索到主搜索关键字的最后一个子关键字为止。在上面的示例中,最后一次搜索是在表4的关键字值内搜索对字节4的匹配。在最后一个表中与最后一个子关键字的匹配相对应的索引值指向在生物识别数据库中包括的记录,如在图3中看到的。因此,可以获得关于对应于主搜索关键字的生物识别信息的以因而产生的记录集合的形式的一个或更多个匹配结果。注意,最终索引值可能指向数据库内的多个位置,因为正在被搜索的关键字(表示例如在生物识别表示内的特征点)可能不是唯一的。因此,可以接收从对主搜索关键字的单次搜索产生的在生物识别数据库内的几个记录。记录可以例如涉及属于个人的生物识别表示。如果通过使用主搜索关键字搜索到从指纹图像获得的特征点,则可得到多个可能的匹配,即已知个体的所存储的指纹,其中特征点具有与由搜索关键字表示的特征相同的特征。
在图5中示意性地示出了第一索引表(索引表0)和接下来的第二索引表(索引表1)以及数据库记录的示例。
假设主搜索关键字是16位以及主搜索关键字被分成两个子关键字,第一(子关键字0)和第二(子关键字1)子关键字每个具有8位的大小。还假设一些关键字值不在索引表中被表示,并且对于第二关键字(子关键字1)的索引表(索引表1)中的一些值是重复的。
因为第一索引表(索引表0)的大小由于未命中值254而小于28,所以数字搜索用于检索指向在第二索引表(索引表1)中的起始索引的相应指针(指针0、1、2...255)。为了最小化搜索时间,可插入未命中关键字值,并将相应的指针值设置为空。因此,表可以用作查找表。然而,在最后一个索引表中,在该示例中的对应于最不重要的子关键字的第二索引表(索引表1)中,有限部分可以包含重复的关键字值。因此,必须对最后一个索引表(索引表1)使用数字搜索,允许为重复的子关键字值检索几个数据库索引(Db00、Db01、Db02等)。
用于子关键字的索引表可以在图6中示出为包含对于在第一(子关键字0)和后面的第二(子关键字1)子关键字中的关键字值的每个组合的数据库索引(0、1、2...255)的二维数组。如果存在多于两个子关键字,则如图6所示的索引表将具有多于两个维度。例如,三个子关键字导致具有三个维度的索引表,四个子关键字导致具有四个维度的索引表,等等。
假设对于第一子关键字(子关键字0)的关键字值为3,则在第二索引表(索引表1)中的搜索由指针值3(指针3)和指针值4(指针4)限制,其中指针3是在第二索引表(索引表1)中的起始地址,以及指针4是将要被搜索的范围之外的第一个地址。
如果使用3个子关键字,则在第二个索引表(索引表1)的有限部分中不再允许重复的关键字值。重复的关键字值仅在最后一个索引表(在此示例中是第三索引表)中被允许。在所有3个子关键字为8位宽的情况下,第一索引表的最大大小为256,第二索引表的大小为256*256,以及第三索引表的大小取决于重复的关键字值的数量。
虽然每个索引表的最大大小(对于第一表以256开始)增加,但是在第一和第二个索引表中的每个内的搜索都被限制到最大256个值。最后一个索引表的有限部分的大小取决于重复的值的数量。然而,所有搜索将在每个表的有限区域内,允许搜索在有限存储器区域(诸如高速缓存存储器)内执行。
在生物识别数据库中,必须允许许多相同的关键字,这是由于可以在一个或几个人中找到每个由关键字描述的几个生物识别特征。在另一方面,如果生物识别特征不导致所有可能的数值存在,则索引表将会更小,如果表用于数字搜索而不是用作查找表的话。
因此,在当前的方法中,当搜索与最后一个子关键字匹配的条目时,至少在最后一个索引表中使用数字搜索,允许重复的关键字属于同一个人或不同的人。
如前面提到的,可能必须执行基于生成的主搜索关键字的集合的几个搜索,以便最终获得诸如指纹、掌纹、DNA等的匹配的生物识别标识符。最可能的匹配将具有来自多于一个的搜索关键字的最大数量的命中。当搜索诸如指纹的生物识别实体时,定义许多生物识别特征,并且生成关键字的集合K。对于完整指纹,在K中的关键字的数量通常为几百个。对于隐性指纹,即从犯罪现场收集的指纹的一小部分,K中的关键字的数量可以低至10-20。对于在关键字的集合K中的每个关键字,使用在允许重复的排序表中的数字搜索来找到特征的集合N。每个找到的特征包含代表人的数据库索引。所有找到的特征的并集可以被称为F。当使用数据库索引对F进行排序时,在对具有相同的数据库索引的找到的关键字Fp计数时,可以找到表示K的最可能的人。最可能的人P具有最高的Fp值。
计算机系统(在其内执行与生物识别信息相关的数字搜索)可以包括具有本地存储器资源(例如高速缓存存储器)的一个或更多个处理单元,诸如所谓的核心。此外,系统可以包括连接到处理单元并由处理单元共享的一个或更多个主存储器。包括生物识别信息的数据库常常非常大,且因此它们可以被包括在RAM存储器、辅助磁盘存储器或固态磁盘中。如果响应时间应在用户友好水平上,则RAM存储器是最合适的选项。
来自所执行的搜索的结果可以由输出单元输出到本地或远程单元。例如,来自一个或更多个搜索的因而得到的记录集可以被转发到用户界面以呈现给用户。在向用户呈现结果之前,可能已经执行了附加处理。此外或另外,因而得到的信息可以被发送到远程单元用于进一步处理、存储等。根据情况,可以以本领域中的技术人员已知的多种方式执行在系统内的通信。在输入/输出单元、存储器、处理单元等之间的通信可以例如是有线和/或无线的。
本申请的主题可以通过使用计算机程序产品来实现,该计算机程序产品包括适于在处理单元上被执行时执行本文所公开的方法的计算机程序代码部分。处理单元可以是单个单元或多个相互连接的处理单元。处理单元可以集成在多处理器计算机系统中。
本申请描述了如何以减小对于搜索关键字所需的时间和存储器空间的方式构造包含与数据库信息相关的排序关键字值的索引表。
就通过索引表进行搜索而言,可以使用几种方法。常用的方法被称为二进制搜索,其是软件开发人员在例如Microsoft的SDK中在名称bsearch下可用的。在bsearch期间,计算步长索引。当引用索引表中的条目时,使用此步长索引。第一步长索引等于所引用的索引表的大小的一半。根据比较结果,步长索引以等于步长索引的当前值的一半的增量步长递增或递减。重复该方法,直到找到一个或几个匹配的关键字为止,或者当找不到匹配时直到增量步长等于零为止。
还可以使用其他方法,例如线性搜索,其中将搜索关键字与索引表中的关键字中的每个进行比较,直到不再找到匹配的关键字为止。
可以设计许多其他搜索方法,其可以是线性搜索和bsearch方法的混合。例如,当在具有N个元素的经排序的索引表中搜索时,可以使用具有大小N/K的初始步长索引,其中因子K<N并且优选地小于或等于N/2。例如当N=256时,K可以是25,或者当N=10000时,K可以是500,当N大于1000 000 000时,K可以是10 000 000。只要K>1,并且没有找到匹配的关键字,当前索引就可以被递增(如果搜索是上升的),或被递减(如果搜索是下降的),其中增量至少为K-1。然后通过使K除以合适的因子来减小K,开发者根据索引表的大小来决定该因子。例如,如果K为500,则可以将它减少到50,稍后到5,以及最后到1,或者为了简单,直接从500到1。后者将花费用于搜索匹配的关键字所需的额外时间。然后用K的新值重复算法,直到K达到0为止。
还可以根据情况使用其他适合的搜索方法。用于在经排序的索引表中搜索的可能的搜索算法的组在该申请中被称为“数字搜索”。虽然本文公开的主题涉及在生物识别信息内的搜索,但它也可以用于执行涉及其他类型的信息的数字搜索。特别地,在本申请中公开的方面可以便于在包括大量数据(诸如地理信息、气象学、高级仿真等)的数据库内的数字搜索。

Claims (39)

1.一种用于在生物识别数据库中执行与生物识别信息相关的数字搜索的方法,用于找到匹配的生物识别标识,
其中,与所述生物识别数据库相关的第一索引表包括多个第一关键字值,每个第一关键字值与第一索引值相关联,所述第一索引值指向包括在所述生物识别数据库内的信息;
所述方法包括:
(1)生成主搜索关键字的集合,每个主搜索关键字表示待搜索项的生物识别特征,
其特征在于:
(2)将所述主搜索关键字的每个划分成至少两个子关键字,每个子关键字包括预定数量的位,
(3)获得索引表的集合,每个索引表包括多于一个的关键字值,每个关键字值与相应的索引值相关联,其中所述索引表的集合中的索引表的数量等于在所述主搜索关键字内的子关键字的数量,
(4)在所述索引表的集合的第一索引表中识别与所述主搜索关键字的第一子关键字相匹配的至少一个关键字值,
(5)对于每个所识别的关键字值,获得指向在下一索引表中的关键字值的有限部分的相应索引值,
(6)在所述下一索引表的所述有限部分中,识别与所述主搜索关键字的下一个子关键字相匹配的至少一个关键字值,
(7)重复获得索引值和搜索下一索引表的有限部分的步骤,直到所述主搜索关键字的所有子关键字都被搜索为止,
其中,在最后一个索引表内对应于对最后一个子关键字的匹配的索引值指向被包括在所述生物识别数据库中的一个或更多个记录,
其中,获得对应于二进制搜索关键字的关于生物识别信息的一个或更多个匹配结果,
所述记录与属于个体的生物识别标识相关;以及
(8)当搜索了所述主搜索关键字的最后一个子关键字时返回结果;
对一起表示所述生物识别标识的多个二进制搜索关键字重复以上步骤(1)-(8);以及
获得因而得到的记录集;
其中,所述第一关键字值不是唯一的,使得所述生物识别数据库内的几个记录得自对于二进制搜索关键字的单个搜索。
2.根据权利要求1所述的方法,其中,每个主搜索关键字包括位的序列,以及在划分所述主搜索关键字时生成的每个子关键字是在所述主搜索关键字中的所述位的子集。
3.根据权利要求1所述的方法,其中,所述主搜索关键字的所述第一子关键字包括最高有效位,并且所述主搜索关键字的最后一个子关键字包括最低有效位。
4.根据权利要求2所述的方法,其中,所述主搜索关键字的所述第一子关键字包括最高有效位,并且所述主搜索关键字的最后一个子关键字包括最低有效位。
5.根据权利要求1所述的方法,其中,生成所述主搜索关键字还包括使在所述主搜索关键字中包括的多个位至少部分地交错。
6.根据权利要求2所述的方法,其中,生成所述主搜索关键字还包括使在所述主搜索关键字中包括的多个位至少部分地交错。
7.根据权利要求3所述的方法,其中,生成所述主搜索关键字还包括使在所述主搜索关键字中包括的多个位至少部分地交错。
8.根据权利要求4所述的方法,其中,生成所述主搜索关键字还包括使在所述主搜索关键字中包括的多个位至少部分地交错。
9.根据权利要求1所述的方法,其中,除了对应于最后一个子关键字的有限部分之外,所述第一索引表的大小和每个有限部分的大小至多为二的在相应子关键字中的位的数量次方。
10.根据权利要求2所述的方法,其中,除了对应于最后一个子关键字的有限部分之外,所述第一索引表的大小和每个有限部分的大小至多为二的在相应子关键字中的位的数量次方。
11.根据权利要求3所述的方法,其中,除了对应于最后一个子关键字的有限部分之外,所述第一索引表的大小和每个有限部分的大小至多为二的在相应子关键字中的位的数量次方。
12.根据权利要求4所述的方法,其中,除了对应于最后一个子关键字的有限部分之外,所述第一索引表的大小和每个有限部分的大小至多为二的在相应子关键字中的位的数量次方。
13.根据权利要求5所述的方法,其中,除了对应于最后一个子关键字的有限部分之外,所述第一索引表的大小和每个有限部分的大小至多为二的在相应子关键字中的位的数量次方。
14.根据权利要求6所述的方法,其中,除了对应于最后一个子关键字的有限部分之外,所述第一索引表的大小和每个有限部分的大小至多为二的在相应子关键字中的位的数量次方。
15.根据权利要求7所述的方法,其中,除了对应于最后一个子关键字的有限部分之外,所述第一索引表的大小和每个有限部分的大小至多为二的在相应子关键字中的位的数量次方。
16.根据权利要求8所述的方法,其中,除了对应于最后一个子关键字的有限部分之外,所述第一索引表的大小和每个有限部分的大小至多为二的在相应子关键字中的位的数量次方。
17.根据权利要求1至16中的任一项所述的方法,
其中,所述第一子关键字的位的预定数量是X,其中X=[1..64],并且其中所述第一索引表包括至多2X个值,以及
其中,所述下一个子关键字的位的预定数量是Y,其中Y=[1...64],并且除了对应于最后一个子关键字的有限部分之外,所述下一索引表的所述有限部分包括至多2Y个值,
从而最小化对于在所述索引表的集合的所述第一索引表中识别与所述第一子关键字匹配的关键字值的步骤以及搜索下一索引表的所述有限部分的步骤所需要的存储器访问的次数。
18.根据权利要求17所述的方法,其中,X=[1..16]或X=[1..8]。
19.根据权利要求17所述的方法,其中,Y=[1..16]或Y=[1..8]。
20.根据权利要求18所述的方法,其中,Y=[1..16]或Y=[1..8]。
21.根据权利要求17所述的方法,其中,X=[1..7,9..15,17..64]。
22.根据权利要求21所述的方法,其中,X=[1..7,9..15]。
23.根据权利要求17所述的方法,其中,Y=[1..7,9..64]。
24.根据权利要求23所述的方法,其中,Y=[1..7,9..16]。
25.根据权利要求21或22所述的方法,其中,Y=[1..7,9..64]。
26.根据权利要求21或22所述的方法,其中,Y=[1..7,9..16]。
27.根据权利要求17所述的方法,其中,X=16或X=8,以及其中Y=8。
28.根据权利要求17所述的方法,其中,X≥Y。
29.根据权利要求28所述的方法,其中,X>Y。
30.根据权利要求28所述的方法,其中,Y=X。
31.根据权利要求29所述的方法,其中,Y=X/2或Y=X/4。
32.根据权利要求17所述的方法,其中,X<Y。
33.根据权利要求1至16、18至24和27至32中的任一项所述的方法,其中,至少当在对应的最后一个索引表中对于最后一个子关键字的匹配搜索所述有限部分时使用数字搜索。
34.根据权利要求17所述的方法,其中,至少当在对应的最后一个索引表中对于最后一个子关键字的匹配搜索所述有限部分时使用数字搜索。
35.根据权利要求1至16、18至24、27至32和34中的任一项所述的方法,其中,每个索引表被用作查找表。
36.根据权利要求1至16、18至24、27至32和34中的任一项所述的方法,其中,每个索引表是经排序的索引表。
37.根据权利要求1至16、18至24、27至32和34中的任一项所述的方法,其中,所述生物识别标识包括指纹、掌纹、面部识别、DNA和语音样本。
38.一种用于在生物识别数据库中执行与生物识别信息相关的数字搜索的系统,以用于找到匹配的生物识别标识,
其中,与所述生物识别数据库相关的第一索引表包括多个第一关键字值,每个第一关键字值与第一索引值相关联,所述第一索引值指向包括在所述生物识别数据库内的信息,所述系统包括:
至少一个处理单元,所述至少一个处理单元包括本地存储器资源,所述处理单元适合于:
(1)接收和/或生成主搜索关键字的集合,其中每个主搜索关键字表示待搜索项的生物识别特征,
(2)将所述主搜索关键字中的每个划分成至少两个子关键字,每个子关键字包括预定数量的位,
(3)获得索引表的集合,每个索引表包括多个关键字值,每个关键字值与相应的索引值相关联,其中所述索引表的集合中的索引表的数量等于在所述主搜索关键字内的子关键字的数量,
(4)在所述索引表的集合的第一索引表中识别与所述主搜索关键字的第一子关键字相匹配的至少一个关键字值,
(5)对于每个所识别的关键字值,获得指向在下一索引表中的关键字值的有限部分的相应索引值,
(6)在所述下一索引表的所述有限部分中,识别与所述主搜索关键字的下一个子关键字相匹配的至少一个关键字值,
(7)重复获得索引值和搜索下一索引表的有限部分的步骤,直到所述主搜索关键字的所有子关键字都被搜索为止,
其中,在最后一个索引表内对应于对最后一个子关键字的匹配的索引值指向被包括在所述生物识别数据库中的一个或更多个记录,
其中,获得对应于二进制搜索关键字的关于生物识别信息的一个或更多个匹配结果,
所述记录与属于个体的生物识别标识相关;以及
(8)当搜索了所述主搜索关键字的最后一个子关键字时返回结果;
对一起表示所述生物识别标识的多个二进制搜索关键字重复以上步骤(1)-(8);以及
获得因而得到的记录集;
其中,所述第一关键字值不是唯一的,使得所述生物识别数据库内的几个记录得自对于二进制搜索关键字的单个搜索;以及
主存储器,所述主存储器连接到所述至少一个处理单元,所述主存储器包括所述生物识别数据库,以及所述索引表的集合。
39.根据权利要求38所述的系统,其中,所述生物识别标识包括指纹、掌纹、面部识别、DNA和语音样本。
CN201680025936.7A 2015-05-06 2016-05-04 用于执行数字搜索的方法、系统和计算机程序产品 Active CN107567621B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP15166575.9A EP3091450B1 (en) 2015-05-06 2015-05-06 Method and system for performing binary searches
EP15166575.9 2015-05-06
PCT/EP2016/060086 WO2016177830A1 (en) 2015-05-06 2016-05-04 Method, system and computer program product for performing numeric searches

Publications (2)

Publication Number Publication Date
CN107567621A CN107567621A (zh) 2018-01-09
CN107567621B true CN107567621B (zh) 2022-04-26

Family

ID=53174815

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680025936.7A Active CN107567621B (zh) 2015-05-06 2016-05-04 用于执行数字搜索的方法、系统和计算机程序产品

Country Status (4)

Country Link
US (1) US10649997B2 (zh)
EP (2) EP3091450B1 (zh)
CN (1) CN107567621B (zh)
WO (1) WO2016177830A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10558814B2 (en) * 2016-07-29 2020-02-11 Google Llc Privacy aware intent resolution with external sources
US10740098B2 (en) 2018-02-06 2020-08-11 International Business Machines Corporation Aligning most significant bits of different sized elements in comparison result vectors
US10579375B2 (en) 2018-02-06 2020-03-03 International Business Machines Corporation Method to build reconfigurable variable length comparators
CN109947803B (zh) * 2019-03-12 2021-11-19 成都全景智能科技有限公司 一种数据处理方法、系统及存储介质
US11651209B1 (en) * 2019-10-02 2023-05-16 Google Llc Accelerated embedding layer computations
CN113535710B (zh) * 2020-04-22 2023-12-15 中山大学 一种搜索方法、装置、终端设备及存储介质
IL281960A (en) * 2021-04-01 2022-10-01 Zimmerman Israel A system and method for rapid statistical discovery of patterns
DE102021210820A1 (de) 2021-09-28 2023-03-30 Siemens Aktiengesellschaft Schutzschaltgerät
US20230418618A1 (en) * 2022-06-24 2023-12-28 Evga Corporation Computer intelligent switching system and method thereof
JP7438432B1 (ja) 2023-06-01 2024-02-26 大日本印刷株式会社 電子情報記憶媒体、icチップ、icカード、レコード書き込み方法、及びプログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101960469A (zh) * 2008-10-20 2011-01-26 王强 快速特征码扫描

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6711562B1 (en) 1999-12-01 2004-03-23 The Trustees Of Columbia University In The City Of New York Cache sensitive search (CSS) tree indexing system and method
WO2001065418A1 (en) * 2000-02-28 2001-09-07 Fibercycle Networks, Inc. System and method for high speed string matching
JP2001326679A (ja) * 2000-05-15 2001-11-22 Fujitsu Ltd 情報装置、テーブル検索装置、テーブル検索方法、及び記録媒体
US7499912B2 (en) * 2003-10-23 2009-03-03 Hywire Ltd. Search method using coded keys
US7616788B2 (en) * 2004-11-12 2009-11-10 Cogent Systems, Inc. System and method for fast biometric pattern matching
SE530514C2 (sv) * 2006-09-07 2008-06-24 Innitor Ab En metod, en apparat och en datorprogramprodukt inom fingeravtrycksmatchning
JP5309088B2 (ja) * 2010-06-21 2013-10-09 株式会社日立製作所 生体認証システムにおける、生体情報の登録方法、テンプレートの利用申請の方法、および、認証方法
US8407245B2 (en) * 2010-11-24 2013-03-26 Microsoft Corporation Efficient string pattern matching for large pattern sets

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101960469A (zh) * 2008-10-20 2011-01-26 王强 快速特征码扫描

Also Published As

Publication number Publication date
US10649997B2 (en) 2020-05-12
US20180157712A1 (en) 2018-06-07
EP3292481A1 (en) 2018-03-14
EP3091450B1 (en) 2017-04-05
WO2016177830A1 (en) 2016-11-10
EP3292481B1 (en) 2021-06-23
CN107567621A (zh) 2018-01-09
EP3091450A1 (en) 2016-11-09

Similar Documents

Publication Publication Date Title
CN107567621B (zh) 用于执行数字搜索的方法、系统和计算机程序产品
JP6662990B2 (ja) オブジェクトネットワークをモデル化するシステム及び方法
Norouzi et al. Fast exact search in hamming space with multi-index hashing
KR101153033B1 (ko) 사본 탐지 및 삭제 방법
US7254580B1 (en) System and method for selectively searching partitions of a database
KR101656245B1 (ko) 문장 추출 방법 및 시스템
US7174346B1 (en) System and method for searching an extended database
CN106326475B (zh) 一种高效的静态哈希表实现方法及系统
JPWO2004062110A1 (ja) データ圧縮方法、プログラム及び装置
Song et al. A distance-computation-free search scheme for binary code databases
JP2018527656A (ja) 画像の高次元特徴の類似性を比較するための方法及びデバイス
US20070174261A1 (en) Database retrieval apparatus, retrieval method, storage medium, and progam
US11106708B2 (en) Layered locality sensitive hashing (LSH) partition indexing for big data applications
CN107784110B (zh) 一种索引建立方法及装置
KR101842274B1 (ko) 문장 추출 방법 및 시스템
US8484221B2 (en) Adaptive routing of documents to searchable indexes
KR20230170891A (ko) 메모리 내 효율적인 다단계 검색
Matsui et al. Reconfigurable Inverted Index
US9747363B1 (en) Efficient storage and retrieval of sparse arrays of identifier-value pairs
CN109241360B (zh) 组合字符串的匹配方法及装置和电子设备
Chappell et al. Efficient top-k retrieval with signatures
IL262576B (en) A system and method for saving document databases and running queries on them
CN114238334A (zh) 异构数据编码、解码方法和装置、计算机设备和存储介质
CN113946365A (zh) 页面识别方法、装置、计算机设备和存储介质
KR20220013084A (ko) 복수의 문서 저장소들과 연동하여 클라이언트 단말로부터 수신된 문서 파일의 저장 처리를 수행하는 문서 저장 관리 서버 및 그 동작 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230523

Address after: Gothenburg

Patentee after: Visilo Ltd.

Address before: Morella, Sweden

Patentee before: Orjan Vestgote Technology AB