CN103282902B - 字尾数组候选选择和索引数据结构 - Google Patents
字尾数组候选选择和索引数据结构 Download PDFInfo
- Publication number
- CN103282902B CN103282902B CN201180064535.XA CN201180064535A CN103282902B CN 103282902 B CN103282902 B CN 103282902B CN 201180064535 A CN201180064535 A CN 201180064535A CN 103282902 B CN103282902 B CN 103282902B
- Authority
- CN
- China
- Prior art keywords
- section
- individual character
- index
- suffix
- record
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 64
- 230000008569 process Effects 0.000 claims abstract description 18
- 230000008878 coupling Effects 0.000 claims description 51
- 238000010168 coupling process Methods 0.000 claims description 51
- 238000005859 coupling reaction Methods 0.000 claims description 51
- 238000001914 filtration Methods 0.000 claims description 21
- 238000009795 derivation Methods 0.000 claims description 3
- 239000000203 mixture Substances 0.000 claims description 2
- 230000009471 action Effects 0.000 description 12
- 238000013480 data collection Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 239000012141 concentrate Substances 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000002372 labelling Methods 0.000 description 3
- 230000013011 mating Effects 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- FQCKMBLVYCEXJB-MNSAWQCASA-L atorvastatin calcium Chemical compound [Ca+2].C=1C=CC=CC=1C1=C(C=2C=CC(F)=CC=2)N(CC[C@@H](O)C[C@@H](O)CC([O-])=O)C(C(C)C)=C1C(=O)NC1=CC=CC=C1.C=1C=CC=CC=1C1=C(C=2C=CC(F)=CC=2)N(CC[C@@H](O)C[C@@H](O)CC([O-])=O)C(C(C)C)=C1C(=O)NC1=CC=CC=C1 FQCKMBLVYCEXJB-MNSAWQCASA-L 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 229940002661 lipitor Drugs 0.000 description 2
- 238000011045 prefiltration Methods 0.000 description 2
- 241000380131 Ammophila arenaria Species 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 241000196324 Embryophyta Species 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/3332—Query translation
- G06F16/3338—Query expansion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2468—Fuzzy queries
Abstract
一种用于识别数据集的候选子集的方法和系统包括将查询字段值的字尾与数据集中的记录的数据字段值进行比较。足够相似的记录被包括在候选子集中。查询字段值字尾的长度范围可以为从其查询字段值本身下至最小字尾长度。可以首先处理最长字尾,然后可以处理依次较短的字尾,直到满意数量的候选被识别为止。从数据集推导的索引数据结构中的项可以使在数据集中找到的各个字尾与单个记录相关联。数据结构项可以包括识别具有与字尾相同的数据字段值的记录的记录关键字,并且还可以包括识别具有与该项的字尾相似的字尾的相关数据结构项的字尾指针。
Description
技术领域
公开的实施方案总地涉及在查询结构化数据和半结构化数据的上下文中通过使用广义的字尾数组(suffix array)对精确匹配和不精确匹配的候选选择(candidateselection)。
背景技术
当试图在大型表格中找到查询的精确匹配和不精确匹配时,准确地确定记录之间的相似性可能在计算上是昂贵的。传统上,值或字段的B树、散列和倒排索引可以用于(所谓的“成块策略(blocking strategies)”)找到候选匹配。这些匹配在后续处理阶段中可以使用更精准的方法来进行改善。
散列或关键字可以是从给定记录计算的任何值。例如,名字的第一个字母(其后为姓的第一个字母)和社会保险号的最后四位可以是散列或关键字值。另一个示例可以是使用数字字段或密码散列的SOUNDEX代码(用于按名字的声音的表示对这些名字建立索引的语音算法)(以在匹配处理中保持保密性)。基于这样的散列或关键字的系统可能是受限的,因为仅考虑被系统设计者或用户明确地选择的关键字所涵盖的相似性模式。不遵循这些模式的真实世界的数据变化处于被丢失的危险之中。这可能导致错误的否定(丢失的匹配),并且对于许多查询可能是不可接受的。此外,可能难以找到数据的良好关键字,例如当处理复杂的产品描述时。
基于B树和其他树的数据结构允许范围查询,并且可以在查询与记录之间找到最长字首匹配。但是仅找到字首匹配可能表现出与匹配关键字相同的问题中的许多问题,例如,错误否定可能是个危险,并且对于许多查询可能是不可接受的。
倒排索引是可以使用数据中出现的所有标记连同标记出现的位置(一个或多个)的列表的全文索引。这种方法通常可以用于找到文本文档或电子邮件,但是还可以应用于结构化数据。当数据和查询没有被相同地标记化、跨字段分离或者从字段合并时,这种方法可以导致丢失的匹配。示例包括查询与记录之间的不相似的数据字段、可能难以标记化的外国名字以及表格中被设计用于西方名字(例如,AbuAli al-Husayn ibnSina、xiaolongqui)的字段。
发明内容
本文公开了用于识别数据集的候选子集的系统和方法的各种实施方案。数据集可以包括用数据字段结构化的多个记录,每个记录的数据字段可以包括数据字段值。数据字段值可以包括一个或更多个单字(unigram)的序列。实施方案可以包括辨识查询字段值并且执行候选产生迭代循环的步骤。在某些实施方案中,识别的候选子集可以被递送给过滤过程,过滤过程识别候选子集的过滤子集。
在某些实施方案中,迭代循环可以包括:(1)识别查询字段值字尾;(2)识别数据集的限定(qualifying)子集,该限定子集具有包含与查询字段值字尾基本上相似的数据字段的记录;(3)将识别的限定子集记录包括在候选子集中;以及(4)用新的查询字段值字尾重复该迭代循环。该迭代循环可以重复,直到满意数量的候选被找到为止。在第一次迭代中,查询字段值字尾可以与查询字段值相同。
在某些实施方案中,识别查询字段值字尾的步骤可以涉及产生它;在其他实施方案中,识别查询字段值字尾的步骤可以涉及从合格字尾集选择它。合格字尾集可以通过执行字尾产生迭代循环来产生。在某些实施方案中,字尾产生迭代循环可以包括:(1)产生查询字段值的字尾;(2)将产生的字尾包括在合格查询字段值字尾集中;以及(3)重复该循环,直到所有合格字尾被产生为止。在某些实施方案中,第一个产生的字尾与查询字段值相同。
在某些实施方案中,每个限定子集记录的数据字段值可以是与查询字段值字尾相同的单字的序列。在某些实施方案中,每个限定子集记录的数据字段值可以是与查询字段值字尾相似、但不相同的单字的序列。在这样的实施方案中,当与查询字段值字尾比较时,数据字段值可以与相似性得分相关联或者被分配该相似性得分,并且相似性得分可以满足最小相似性得分标准。
在某些实施方案中,识别数据集的限定子集的步骤可以涉及访问从数据集推导的索引数据结构。索引数据结构可以包括项(entry),这些项包含单字序列,并且使该单字序列与数据集记录相关联。和当与查询字段值字尾相比时满足索引项相似性标准的项相关联的记录可以被包括在数据集的限定子集中。
公开的用于识别数据集的候选子集的系统和方法可以包括辨识多个查询字段值并且执行候选产生迭代循环的步骤。在某些实施方案中,识别的候选子集可以被递送给过滤过程,过滤过程识别候选子集的过滤子集。
在某些实施方案中,迭代循环可以包括:(1)对于每个查询字段值识别查询字段值字尾;(2)识别数据集的限定子集,该限定子集具有包含与查询字段值字尾足够相似的数据字段的记录;(3)对于限定子集中的每个记录确定相似性得分;(4)识别限定子集的阈值子集,其中相似性得分满足阈值;(5)将阈值子集记录包括在候选子集中;以及(6)用新的查询字段值字尾重复该迭代循环。该迭代循环可以重复,直到满意数量的候选被找到为止。在第一次迭代中,对于每个查询字段值,查询字段值字尾可以与查询字段值相同。
还公开了从数据集推导的索引数据结构的实施方案。索引数据结构可以用于识别数据集的候选子集。索引数据结构可以具有关于每个记录的数据字段值的每个数据字段值字尾的项,并且项可以包括与数据字段值字尾相同的索引单字序列以及使该索引单字序列与限定数据集记录相关联的记录关联数据。限定数据集记录可以包含索引单字序列。在某些实施方案中,索引数据结构可以具有关于数据集中的每个唯一数据字段值字尾的项,并且可以按索引单字序列进行排序。
在某些实施方案中,记录关联数据可以包括记录关键字和字尾指针。记录关键字可以识别限定数据集记录,其中该记录的数据字段值与索引单字序列相同。字尾指针可以识别索引数据结构中的相关项,其中该相关项的单字序列包含该项的单字序列。
公开的用于识别数据集的候选子集的系统的实施方案可以包括索引数据结构和候选产生器。某些实施方案还可以包括用于产生索引数据结构的索引数据结构产生器。索引数据结构可以被储存在一个或更多个存储元件上,并且可以从数据集推导。索引数据结构中的每个项可以具有索引单字序列和使该索引单字序列与数据集记录相关联的数据。
候选产生器可以被实现在一个或更多个处理器上,并且可以用于辨识查询字段值并且用于执行候选产生迭代循环的迭代。在某些实施方案中,候选产生器还可以用于产生合格查询字段值字尾集,并且还可以用于将候选子集递送给过滤过程。
在某些实施方案中,候选产生器还用于在执行候选产生迭代循环的第一次迭代之前修改辨识的查询字段值。修改辨识的查询字段值的步骤可以涉及将第一个单字移到末尾并且将单字序列向左移。
附图说明
图1A和1B是图示说明根据本公开的用于识别结构化或半结构化数据集的候选子集的示例性系统的示意图;
图2是图示说明根据本公开的用于查询并过滤结构化或半结构化数据的示例性方法的流程图;
图3是图示说明根据本公开的用于查询并过滤结构化或半结构化数据的示例性过程的示意图;
图4是图示说明根据本公开的用于识别结构化或半结构化数据集的候选子集的示例性方法的流程图;
图5是图示说明根据本公开的识别结构化或半结构化数据集的候选子集中使用的示例性索引数据结构的示意图;
图6是图示说明根据本公开的示例性相似性评分系统的图表示图;以及
图7是图示说明根据本公开的循环字(circular gram)的示意图。
具体实施方式
电子储存的信息可以按若干种方式进行组织。这样的电子信息可以被储存在结构化或部分结构化的表格或者包括记录的其他数据集中,并且每个记录可以由至少一个记录标识字段(比如,记录关键字)和一个或更多个数据字段组成。例如,机动车辆部门(DMV)信息可以以关于每个注册车辆的记录被储存在数据集中。除了标识字段之外,这样的DMV记录还可以具有所有者数据字段、所有者地址字段、VIN字段、车辆型号字段和/或任何数量的其他合适的数据字段。这样的记录表格可以包括数百个、数千个、数百万个或更多个单个记录。找到满足特定搜索标准的特定记录或记录组可能在计算上是昂贵的,并且耗时。
搜索大型表格的一些方法可以利用与记录中的数据字段值相关的专设索引数据结构。如果数据字段值包括一个或更多个单字的序列(例如,串),则这样的专设索引数据结构可以包括,例如表格中的所有可匹配数据字段的三字(trigrams)(三个单字的子串)的倒排索引——可以使用其他字(gram)长度。换句话讲,对于字段中的每一个唯一三字,索引数据结构可以维护包含这个三字的记录关键字的列表(也称为字矢量)。索引数据结构可以被保存在存储器中以供实时查询执行。
搜索大型表格的一些方法还可以实现这样的过程,该过程可以分析查询,可以确定哪些三字出现在查询中以及它们的相对重要性(权重)是多少,然后可以遍历字矢量来识别具有最高的三字得分总和的记录。这样的过程在被索引的数据集的大小和对于大型数据集的查询的大小上可以近似线性地缩放,并且对于较小的数据集可以次线性地缩放(这是当冲突频繁时典型的散列行为)。
这样的搜索过程就精度和性能而言在许多情况下可以很好地工作,不过可能是受限的,因为对于查询与数据共享的任何三字,遍历几乎所有的字矢量。参见,例如,Yianilos等人的美国专利No.7,107,263,该专利通过引用被并入本文。即使当精确匹配或接近精确匹配被找到时,所有记录(甚至具有最远匹配的那些记录)也被详尽地考虑。在大型数据集上,这样的候选选择算法可以消耗大量CPU资源用于查询。此外,当许多接近匹配存在时,固定长度子字的限制可以限制精度,因为恒定长度的子串匹配限制了关于匹配的上下文信息,因此分辨率可能会降低。这样的搜索过程还可能丢失使用较短字时会找到的一些匹配。
搜索大型表格的一些方法可以实现SORT预过滤器。SORT预过滤器可以使用一组排序关键字来找出传递给后续过滤阶段的匹配候选。搜索关键字可以包括记录列表按其进行字母顺序排序的字段的序列。除了字母顺序排序之外,SORT过滤器还可以使用倒写串作为另一个搜索关键字。
按关键字排序的记录列表可以被储存在存储器中(作为记录关键字数组),因此可以允许查询通过对排序列表使用二分搜索来查找最接近该查询的记录。然后,特定范围的记录(比如说,最接近这个位置的100个记录)可以被传递给下一阶段。这可以以log(N)计算复杂度来工作。这里的“最接近”意指查询与记录字段之间的最长字首匹配。当使用基于在后的记录字段的关键字时,它反而可以找到最长字首匹配。
对于具有1千万个记录和12个搜索关键字的典型数据库,SORT可以储存12千万个记录关键字(32比特整数)。限制是如果在记录与查询之间既不存在足够的字首匹配,也不存在足够的字尾匹配,则特定关键字可能不能找出所需的记录。这个限制大多可以通过使用几个关键字以使得它们中的至少一个将所需的记录(一个或多个)向前推送到下一过滤阶段来克服。
如果代替前向关键字和后向关键字使用查询字段字尾,则M个查询字段字尾与记录中对应的数据字段字尾之间的基本上所有的子串匹配可以每一查询字段使用Mlog(N*k)次查找来找出。在前面那句话中,M表示查询字段中的单字的数量,k表示记录的对应数据字段的平均长度(通常对于典型的数据集平均小于10),N表示表中的记录的数量。排序的记录列表将会更长(因为每一个记录的字段的字尾被储存,与只储存值的前向项和后向项相反),并且字段中的附加位置使用1-2个附加字节来添加,导致大小增大3-8倍(典型的)。
优点可以是最长子串匹配有可能是比仅字首和子串匹配好得多的逼近——但是如果字首匹配或字尾匹配最长,则这些也将被包括在基于字尾的结果中,因为它们也是子串。
本文公开了可以准确地、高效率地在结构化和/或半结构化数据集中的记录之中找到查询匹配的系统、过程和方法的实施方案。可以首先找到最相似匹配记录(例如,具有最匹配子串和/或最长匹配子串的那些记录),并且之后可以匹配相似性程度降低的记录。某些实施方案可以在用户定义的时刻提早终止。因此,可以考虑更长匹配子串,这可以通过考虑更多内容来提高查询的准确度。
本文还公开了可以紧凑地表示关于重复数据的广义字尾数组的数据结构的实施方案。通过这些数据结构实施方案,可以快速地计算几乎任何长度的子串匹配。此外,这些数据结构的实施方案可以最小化典型使用情况下的存储器使用率。在某些实施方案中,可以使用普通广义字尾数组。
图1A是图示说明用于识别结构化或半结构化数据集的候选子集的示例性系统100的示意图。系统100可以包括存储元件110,存储元件110具有索引数据结构111和用于结构化和/或半结构化数据集114的储存器。在某些实施方案中,索引数据结构111和数据集114可以驻留在同一存储元件110中,在其他实施方案中,索引数据结构111和数据集114可以驻留在分开的存储元件中。在还有的其他实施方案中,索引数据结构111和数据集114中的一个或两个可以驻留在多个存储元件上。索引数据结构111可以用于储存单字序列、记录关键字和/或与数据集114相关联的其他记录关联数据。系统100还可以包括处理器120。处理器120可以包括候选产生器122,当处理数据集114的查询时,候选产生器122可以使用索引数据结构111来识别数据集114的候选子集。处理器120还可以包括用于基于结构化或半结构化数据集114填充(populate)索引数据结构111的索引数据结构产生器124。处理器120可以通过通信总线或网络130与存储元件110通信。
尽管系统110中仅示出了一个处理器120和单个存储元件110,但是可以使用多个处理器120和多个存储元件110。出于简单的目的,仅示出了处理器120和单个存储元件110。在实施方案中,在联网计算环境下,可以使用具有共享处理能力和共享存储器或储存器的一组联网计算机器。在其他实施方案中,可以使用具有多个处理器和/或多个存储元件或储存元件的单个机器。
图1B是图示说明用于识别结构化或半结构化数据集的候选子集的示例性系统150的示意图。查询结构化和/或半结构化数据的用户可以使用用户机器170来执行数据的搜索。用户机器170可以包括浏览器窗口172。在实施方案中,浏览器窗口172可以包含从用户接收查询词的输入字段。
用户机器170可以通过网络190(包括,但不限于,互联网或万维网)与系统150的应用层交互。系统150可以包括用于访问匹配引擎152的应用层162。在实施方案中,匹配引擎152在层155中可以作为存储器中应用程序操作。
通过使用TCP客户端151,应用层162可以通过TCP套接字与匹配引擎152通信。在实施方案中,通信180可以通过TCP-IP套接字通信来实现。
在实施方案中,匹配引擎152可以包括候选产生器154,并且可以包括与任何数据库引擎161通信的存储器中应用程序。数据库引擎161可以包括,但不限于,Oracle、Microsfot SQL Server、IBM DB2、MySQL等,并且可以与数据储存元件163通信。匹配引擎152还可以与存储器中索引数据结构153相关联并且与之通信。
在客户端,搜索功能可以通过使用常见编程语言(包括,但不限于,Java、.Net、Python和C/C++)的API被集成到应用程序162中。候选产生器154可以在任何平台(包括,但不限于,Linux、Windows和所有主要UNIX平台)上运行。候选产生器154还可以能够提供对各种大小的数据库163的持续实时的精确搜索能力。
在实施方案中,匹配引擎152架构可以使得搜索请求可以在应用程序实例之间被进行负载平衡,并且被分割来以最短等待时间处理任何大小的数据库163。多线程联合查询可以由匹配引擎152处理,并且可以允许范围广泛的服务器环境、数据架构和将满足的企业应用需要。
在实施方案中,匹配引擎152可以使用高级数学建模和基于二分图的匹配来计算相似性得分。匹配引擎152可以能够在标准硬件上在短时间量内处理大量匹配计算。匹配引擎152可以找到与严格SQL类型搜索和其他类型的模糊匹配可能找不到的查询相似的数据元素。机器引擎152关于数据或领域的类型可以基本上是不可知论的。匹配引擎152可以不需要知道数据是否包含名字和地址信息、产品信息、医疗记录或中文字符信息。在实施方案中,可以混合口头语言。匹配引擎152可以基本上允许在由于数据的文化和领域独立性导致而事先不知道该数据的类型、结构或状态的情况下进行快速部署。
图2是图示说明用于查询并过滤结构化或半结构化数据的示例性方法的流程图200。在动作202,可以基于结构化或半结构化数据集(具体地,基于结构化或半结构化数据集中包括的多个记录)来确定索引数据结构。在某些实施方案中,索引数据结构项可以包括与数据集记录相关联的单字序列(例如,字尾),并且还可以包括记录关联数据。在某些实施方案中,记录关联数据可以包括识别哪些记录与单字序列相关联的记录关键字。在某些实施方案中,记录关联数据可以包括下述数据的指针(或地址),该数据具有关于与结构化或半结构化数据中的字尾矢量相关联的字尾关系、字和/或记录关键字的信息。索引数据结构可以一开始被确定,然后每当记录被添加到数据集中、被从数据集删除和/或在数据集中被改变时被更新。
每当对满足查询的特定记录或记录组搜索数据集时,就可以识别初始记录候选集,并且之后可以提炼该初始候选集。在动作204,可以执行候选产生阶段。候选产生阶段可以包括辨识一个或更多个查询值,并且可以包括访问索引数据结构来识别结构化或半结构化数据集中与查询值匹配的记录。查询值可以包括一个或更多个单字的序列。与这样的查询值匹配的记录可以包含数据字段,并且这样的数据字段中的值还可以包括一个或更多个单字的序列。单字表示例如数据串中的可辨识数据的单元。在某些实施方案中,单字可以是字素,比如,字母、字母数字字符、数字或中文字符,然而单字可以是处理系统可辨识的任何数据单元。
候选产生阶段还可以包括识别给定查询值的字尾以识别结构化或半结构化数据集中与该字尾匹配的记录。对于包括被表示为U1U2U3…UN的N个单字的序列的查询值(或任何值),可以识别最多N个字尾:U1U2U3…UN(字尾长度N,最大可能长度字尾,其为数据值本身);U2U3…UN(字尾长度N-1);U3…UN(字尾长度N-2);以及UN(字尾长度1,最小可能长度字尾)。
在某些实施方案中,相似性度量或其他相似性标准可以用于识别匹配记录。相似性度量可以用于将相似性得分分配给单个记录。例如,如果给定查询值的全长与记录的数据字段值完全匹配,则相似性得分1.0可以被分配给该记录;如果给定查询值没有单字与记录的数据字段值匹配,则相似性得分0.0可以被分配给该记录。部分匹配可以落在0.0与1.0之间的范围内。
在某些实施方案中,候选产生阶段可以利用迭代过程来识别数据集中的记录集的候选子集。在这样的实施方案中,可以识别第一个查询值字尾,并且可以识别记录集的与第一个查询值字尾匹配的限定子集,并且可以将该限定子集添加到候选子集。如果满意数量的候选记录还未被识别,则可以识别第二个查询值字尾,并且可以识别记录集的与第二个查询值字尾匹配的限定子集,并且可以将该限定子集添加到候选子集。再次,如果满意数量的候选记录还未被识别,则可以识别第三个查询值字尾,并且可以识别记录集的与第三个查询值字尾匹配的限定子集,并且可以将该限定子集添加到候选子集。可以重复这个过程,直到满意数量的候选记录已被识别为止,直到所有查询值字尾都已被处理为止,直到预定数量的查询值字尾已被处理为止,或者直到满足某些其他循环结束标准为止。
在某些实施方案中,候选产生迭代循环可以以长查询值字尾开始,并且可以以查询值本身开始。连续迭代然后可以使用缩短的查询值字尾(例如,比前一查询值字尾短一个字长的查询值字尾)。可以继续这个操作,直到最短字长用于查询字尾为止,或者直到足够的匹配集已被累积为止。通过首先以最长字尾开始,可以更快速地确定最相关匹配。当足够数量的匹配被累积时,可以确定最高评分记录,并且可以将这些最高评分记录传递给过滤阶段。以下关于图4讨论候选产生阶段204。
在动作206,可以对候选子集执行过滤阶段。在实施方案中,第一次过滤阶段生成预计在结构化或半结构化数据集中得分最高的记录。在实施方案中,第一次过滤阶段可以对可变长度的字的共同出现进行计数。在实施方案中,后一过滤阶段可以利用二分图算法或其他算法来在结果集中产生返回给用户的得分。在实施方案中,第二次过滤阶段可以通过考虑匹配字的位置信息来增强结果。
图3是图示说明用于查询并过滤结构化或半结构化数据的示例性过程300的示意图。可以对结构化和/或半结构化数据集发起301查询(例如,“John Smith Hillview”)。在候选产生阶段302,可以访问与数据集相关联的索引数据结构304来识别数据集中与给定查询字段相似(例如,精确匹配或不精确匹配)的记录。来自候选产生阶段302的结果(例如,2000个记录)可以被传递给第一次过滤阶段306。第一次过滤阶段306可以生成并过滤数据集中预计得分最高的记录。在实施方案中,第一次过滤阶段可以对可变长度的字的共同出现进行计数。来自第一次过滤阶段306的结果(例如,200个记录)可以被传递给第二次过滤阶段308。第二次过滤阶段308可以在结果集中生成返回给请求者的得分。在实施方案中,第二次过滤阶段可以通过考虑匹配字的位置信息来增强结果。
图4是图示说明用于识别结构化或半结构化数据集的候选子集的示例性方法400的流程图。该过程从动作401开始。假设对于m个字段的给定查询Q=(q1,q2,…,qm-1,qm),在动作402,可以对每一个查询字段值qi产生直至最小字尾长度的所有字尾。单个查询字段值qi可以包括以以U1开头并且以UN结束的N个单字的序列。查询字段值qi的字尾可以包括以U1+J开头并且以UN结束的N-J个单字的序列,其中J用符号表示小于N的非负整数值。当J等于零时,查询字段值字尾和查询字段值是相同的单字序列。例如,对于Q=(“WILHELM”,“SMITH”,“HILLVIEW”)以及对于最小字尾长度3,对于第一个查询字段值q1产生的字尾是WILHELM、ILHELM、LHELM、HELM和ELM;对于第二个查询字段值q2产生的字尾是SMITH、MITH和ITH;对于第三个查询字段值q3产生的字尾是HILLVIEW、ILLVIEW、LLVIEW、LVIEW、VIEW和IEM。在某些实施方案中,对于查询字段值qi中的任何一个或全部,可以产生比所有可能字尾少的字尾。
在动作404,可以在从数据集推导的索引数据结构中查找给定qi字尾(例如,WILHELM)。在某些实施方案中,索引数据结构可以使单字序列与数据集中的记录相关联。在某些实施方案中,索引数据结构可以按单字序列进行排序,并且索引数据结构的二分搜索可以取O(log(索引数据结构中的唯一字尾的数量))个时间单位。索引数据结构中包含与给定qi字尾匹配的单字序列的所有项因此可以例如通过子串匹配来识别,结果与匹配单字序列相关联的数据集记录也被识别。因此,数据集中任何地方的包含给定qi字尾的所有记录都可以被识别。在实施方案中,首先使用较长的qi字尾来访问索引数据结构。例如,对于查询字段值WILHELM,WILHELM本身是最长的qi字尾。
在动作406,可以检索与识别的包含给定qi字尾的索引数据结构项相关联的记录关键字。在某些实施方案中,记录关键字可以通过与识别的索引数据结构项相关联的记录关联数据来找出。记录关联数据可以使一个或更多个记录关键字与给定qi字尾相关联,并且可以识别数据集中哪些记录包含具有与给定qi字尾匹配的字尾的数据字段。在某些实施方案中,记录关联数据可以包括字矢量。例如,关于给定qi字尾的记录关联数据可以包含指向索引数据结构中的其他项的指针,其中给定qi字尾本身是这些其他项的字尾。以下还结合图5来讨论这个矢量功能。
在动作408,可以分析结构化或半结构化数据中与检索的记录关键字相关联的记录来确定每个记录的得分。得分可以以任何预定方式来确定,例如通过使用下述相似性度量,该相似性度量将字段全长的匹配映射到1.0得分,一直到将不匹配映射到0.0得分。在某些实施方案中,动作408可以仅在动作414之后执行或者可以根本不执行。
在动作410,当足够数量的限定记录已被找到414时,查询过程在415结束。足够数量可以由用户设定,可以在查询算法内被硬编码,或者可以默认为预定数量(例如,2000个记录)。如果足够数量没有被找到412,则再次用新的qi字尾执行动作404。在实施方案中,新的qi字尾具有比在前一步骤404中使用的长度短的长度(例如,少一个单字)。例如,对于查询字段WILHELM,如果WILHELM是使用的第一个qi字尾,则在下一次动作404可以使用ILHELM。
图5是图示说明识别结构化或半结构化数据集502的候选子集中使用的示例性索引数据结构500的示意图。结构化和/或半结构化数据集502可以存在于存储器中。索引数据结构500可以从数据集502推导。索引数据结构500可以被储存在存储器中。索引数据结构500中的每个项可以包含与来自数据集502的数据字段值的字尾对应的单字序列506,并且还可以包含使该单字序列与包含单字序列506的数据集记录相关联的记录关联数据504。单字序列506可以是数据字段中的整个串(例如,对于字段值“JACK”,字尾可以是“JACK”)一直到预定长度(例如,对于字段值“JACK”以及对于预定长度3,字尾可以是“JACK”和“ACK”)的长度。记录关联数据504可以包括顶级数据指针505。顶级数据指针505可以指向关于单字序列的进一步记录关联数据所驻留的存储器位置。在某些实施方案中,单字序列506可以对应于主字项510、仅字尾项520或者字尾/主字组合项530。
主字项510还可以包括记录关联数据,比如,识别具有与单字序列匹配的数据字段的数据集记录的记录关键字列表511。在该实施例中,单字序列“LOJACK”和“RACK”是数据集502中的主字,因为第三个记录具有数据字段“LOJACK”并且第二个记录具有数据字段“RACK”,并且因为没有其他记录具有字尾为“LOJACK”或“RACK”的数据字段。项“LOJACK”包括识别数据集502中的第三个记录的一个记录关键字,项“RACK”包括识别数据集502中的第二个记录的一个记录关键字。
仅字尾项520还可以包括记录关联数据,比如,指示单字序列是储存在数据结构500中的另一个字的字尾的字尾指针508的列表522。在该实施例中,单字序列“OJACK”和“ACK”仅仅是数据集502中的字尾,因为数据集502中没有记录具有数据字段“OJACK”或“ACK”。项“OJACK”包括识别项“LOJACK”的一个字尾指针,项“ACK”包括两个字尾指针:一个字尾指针识别项“JACK”,一个字尾指针识别项“RACK”。在某些实施方案中,字尾指针仅识别具有再多一个单字的那些项。
字尾/主字组合项530还可以包括记录关联数据,比如,识别具有与单字序列匹配的数据字段的数据集记录的记录关键字列表531和指示单字序列是储存在数据结构500中的另一个字的字尾的字尾指针508的列表532。在该实施例中,单字序列“JACK”是数据集502中的字尾/主字组合,因为第一个记录和第四个记录每个均具有数据字段“JACK”,并且第三个记录具有字尾为“JACK”的数据字段。项“JACK”包括两个记录关键字:一个记录关键字识别数据集502中的第一个记录,一个记录关键字识别数据集502中的第四个记录。项“JACK”还包括识别项“OJACK”的一个字尾指针。
图6是图示说明用于在两个查询字段(FN和LN)(但是可以推广用于任何数量的查询字段)上进行查询的数据集记录的示例性相似性评分系统的图表示图600。可以针对查询的两个字段FN和LN给数据集记录分配相似性得分。任何合适的模型或算法可以用于计算相似性得分。最低可能得分606(在本实施例中,0.0)表示记录的数据字段值与查询字段值之间完全不匹配,最高可能得分602、604(在本实施例中,1.0)表示记录的数据字段值与查询字段值之间完全匹配。部分匹配可以被分配0.0与1.0之间的得分。记录的LN相似性得分可以通过将LN得分用于x轴610坐标并且将FN得分用于y轴612坐标来进行绘制。
在FN=Barry并且LN=Sanders的实施例中,数据集中关于Barry Sanders的记录可以被绘制在(1.0,1.0)处,关于Barry Taylor的记录可以被绘制在(0.0,1.0)处,关于JohnSanders的记录可以被绘制在(1.0,0.0)处,关于John Taylor的记录可以被绘制在(0.0,0.0)处。关于Larry Sanders的记录可以被绘制在(1.0,0.9)处,关于Barry Flanders的记录可以被绘制在(0.9,1.0)处,关于Larry Flanders的记录可以被绘制在(0.9,0.9)处。这里分配的得分是任意的,并且仅出于示例的目的。
在某些实施方案中,如本文公开的候选产生器可以在第一次迭代之后识别箭头620右上方的数据集记录,可以在第二次迭代之后识别箭头622右上方的数据集记录,并且可以在第三次迭代之后识别箭头624右上方的数据集记录。
循环字
基于字的评分的一个挑战是字段内部的任何微小误差都可能阻止几个字匹配。例如,如果查询是“LIPATOR”并且字段包含“LIPITOR”,则五个可能的三字中只有两个三字(LIP和TOR)与查询共享,但是查询和字段仅一个字符偏差。(注意:如果使用7字“LIPITOR”找到许多记录,则可能没有必要查看三字)。但是,通常,当使用n字时,单个符号的插入/删除/替换将影响多达n个(部分重叠的)的n字。改变两个内部字符的顺序具有甚至更严重的效果。在短字段的末端附近,变化的效果小得多。正交变化的效果通常在标记的开头(有时,末尾,比如说,Maria对Mario)更严重。同样适用于比如“PETER”对“PEDER”。例如,在典型的7百万个记录真实世界数据集中找到具有名字PEDER的40个记录。
因此,循环字(或包裹字(wrapping gram))可以用于解决这个问题。图7是图示说明使用循环字的“WILHELM”的字尾。在实施方案中,循环字可以与字尾字一起用来或者代替字尾字用来确定索引数据结构以及执行候选产生查询。
位置信息的使用
本公开的过滤链基于相似性判断的后续提炼。使用字尾数组的另一益处是它允许考虑位置信息。当基于结构化或半结构化数据产生索引数据结构时,可以对于每一次出现保存位置信息。当从查询产生查询字尾时,可以使用位置信息。在许多情况下,使用位置信息还可以提炼候选选择,因此将更好的候选呈现给后续过滤阶段。更好的候选意味着更少的候选最后被传递给后续过滤阶段,从而减小用于这些后续过滤阶段的计算开销。
尽管上面已经描述了各种实施方案,应当理解的是,它们仅通过示例性的方式被呈现,而非限制性的。因此,优选实施方案的宽度和范围不应被任何上面描述的示意性实施方案所限,而是应当仅根据权利要求及其对于发布要求所给出的临时专利申请的优先权的任何专利的等同形式来限定。
例如,如本文所提及的,机器或引擎可以为虚拟机器、计算机、节点、实例、主机或联网计算环境中的机器。同样如本文所提及的,联网计算环境是通过便利机器之间的通信并且允许机器共享资源的通信信道连接的机器的集。再如本文所提及的,服务器是被部署来执行程序的机器并且可以包括软件实例,该程序操作为套接字监听程序(socketlistener)。
资源可以囊括用于运行实例的任何类型的资源,包括硬件(例如,服务器、客户端、大型计算机、网络、网络储存器、数据源、存储器、中央处理单元时间、科学仪器以及其他计算设备)和软件、软件许可、可用网络服务以及其他非硬件资源或其组合。
联网计算环境可以包括,但不限于,计算网格系统(computing grid system)、分布式计算环境、云计算环境等。这样的联网计算环境包括硬件和软件基础架构,该硬件和软件基础架构被配置来形成包括多个资源的虚拟组织,该多个资源可以在地理上是分散在多个位置上的。
尽管TCP/IP通信协议可以在本文被描述,但是本申请和由此获得的任何专利的覆盖范围均可以扩展到其他通信协议。
本文所使用的各种术语具有本技术领域内的特定含义。具体术语是否应当被认为是这样的“技术术语”取决于该术语被用于的上下文。“连接到”、“与……通信”、“与……相关联”或者其他类似的术语一般地应当被广义地认为是包括这样的两种情况的,其中通信和连接在所涉及的部件之间是直接的或者是通过所涉及的部件之间的一个或更多个中间物的,包括通过因特网或者某些其他通信网络。“网络”、“系统”、“环境”以及其他类似的术语一般地涉及体现本公开的一个或更多个方面的联网计算系统。这些和其他术语将根据在本公开中被用于的上下文来理解,并且将被理解为本领域的普通技术人员中的一个在所公开的上下文中会理解的那些术语。上面的限定并不排除基于所公开的上下文可以被赋予那些术语的其他含义。
比较、度量和时间选择(timing)的词汇,例如“此时”、“等同形式”、“在……期间”、“完全”等,应当被理解为意指“基本上此时”、“基本上等同形式”、“基本上在……期间”、“基本上完全”等,其中“基本上”意指,对实现隐含地或明确地阐述的期望结果来讲,这样的比较、度量和时间选择是实际可行的。
此外,本文的段落标题是被提供来与37CFR1.77的建议一致,或者用于提供本文的结构线索。这些标题不应限制或表征可以从本公开公布的任何权利要求中所阐述的发明(一个或多个)。具体地并且以示例的方式,尽管标题涉及“技术领域”,但是权利要求书不应被该标题下所选择的语言限制为描述所谓的技术领域。此外,“背景技术”中的技术的描述不是要被解读为承认该技术是该公开中的任意发明(一个或多个)的现有技术。“发明内容”也不是要被认为是在公布的权利要求书中所阐述的发明(一个或多个)的特征描述。另外,本公开中对单数的“发明”的任何引用不应被用于证明在本公开中仅有一个新颖点。根据从本公开公布的多个权利要求的限定,可以阐述多个发明,并且这些权利要求相应地定义了由其保护的发明(一个或多个),以及它们的等同形式。在所有例子中,这些权利要求的范围应根据该公开按照这些权利要求本身的实质来理解,而不应被本文的标题限制。
Claims (45)
1.一种用于识别数据集的候选子集的方法,所述数据集包括用数据字段结构化的多个记录,每个记录的数据字段包括数据字段值,所述数据字段值包括一个或更多个单字的序列,所述方法包括:
辨识查询字段值,所述查询字段值包括以U1开头并且以UN结束的N个单字的序列,其中U用符号表示单字,N用符号表示非负整数值;以及
执行候选产生迭代循环的第一步、第二步、第三步和第四步,其中
所述第一步包括识别查询字段值字尾,所述查询字段值字尾包括以U1+J开头并且以UN结束的N-J个单字的序列,其中J用符号表示小于N的非负整数值,
所述第二步包括识别所述数据集的限定子集,其中当所述限定子集中的每个记录的数据字段值与所述查询字段值字尾比较时,所述记录满足相似性标准,
所述第三步包括将识别的限定子集记录包括在所述候选子集中,并且
所述第四步包括当所述候选子集中的记录的数量少于满意数量的候选时,并且当N-J大于最小字尾长度时,则增大J并执行所述候选产生迭代循环的第一步、第二步、第三步和第四步;
其中识别所述数据集的限定子集的步骤包括访问从所述数据集推导的索引数据结构,所述索引数据结构包括关于每个记录的数据字段值的每个数据字段值字尾的索引数据结构项,每个数据字段值字尾包括单字序列,并且使所述单字序列与所述数据集记录中的一个或更多个相关联;
其中关于每个记录的数据字段值的每个数据字段值字尾的所述索引数据结构项进一步限定以下第一个索引数据结构项、第二个索引数据结构项、第三个索引数据结构项、第四个索引数据结构项以及第五个索引数据结构项:
所述第一个索引数据结构项包括第一项索引单字序列、零个第一项记录关键字、第一个第一项字尾指针以及第二个第一项字尾指针,所述第一个第一项字尾指针识别所述第二个索引数据结构项,并且所述第二个第一项字尾指针识别所述第三个索引数据结构项;
所述第二个索引数据结构项包括第二项索引单字序列、第一个第二项记录关键字、第二个第二项记录关键字以及第二项字尾指针,所述第二项索引单字序列的最后单字与所述第一项索引单字序列相同,所述第一个第二项记录关键字识别所述数据集中的第一个记录,所述第一个记录的数据字段值与所述第二项索引单字序列相同,所述第二个第二项记录关键字识别所述数据集中的第四个记录,所述第四个记录的数据字段值与所述第二项索引单字序列相同,并且所述第二项字尾指针识别所述第四个索引数据结构项;
所述第三个索引数据结构项包括第三项索引单字序列、第三项记录关键字以及零个第三项字尾指针,所述第三项索引单字序列的最后单字与所述第一项索引单字序列相同,并且所述第三项记录关键字识别所述数据集中的第二个记录,所述第二个记录的数据字段值与所述第三项索引单字序列相同;
所述第四个索引数据结构项包括第四项索引单字序列、零个第四项记录关键字以及第四项字尾指针,所述第四项索引单字序列的最后单字与所述第二项索引单字序列相同,并且所述第四项字尾指针识别所述第五个索引数据结构项;以及
所述第五个索引数据结构项包括第五项索引单字序列、第五项记录关键字以及零个第五项字尾指针,所述第五项单字序列的最后单字与所述第四项索引单字序列相同,并且所述第五项记录关键字识别所述数据集中的第三个记录,所述第三个记录的数字字段值与所述第五项索引单字序列相同。
2.如权利要求1所述的方法,其中在完成所述候选产生迭代循环的第一次迭代之前,J等于零,并且所述查询字段值字尾与所述查询字段值相同。
3.如权利要求1所述的方法,其中所述数据字段值和所述查询字段值每个均包括一个或更多个字素的序列。
4.如权利要求3所述的方法,其中所述一个或更多个字素的序列选自由以下序列构成的组:
一个或更多个字母的序列;
一个或更多个字母数字字符的序列;
一个或更多个数字的序列;以及
一个或更多个中文字符的序列。
5.如权利要求1所述的方法,其中识别所述查询字段值字尾的步骤包括产生所述查询字段值字尾。
6.如权利要求1所述的方法,其中识别所述查询字段值字尾的步骤包括从合格查询字段值字尾集选择所述查询字段值字尾。
7.如权利要求6所述的方法,还包括在执行所述候选产生迭代循环的第一次迭代的第一步之前产生所述合格查询字段值字尾集。
8.如权利要求7所述的方法,其中产生所述合格查询字段值字尾集的步骤包括执行字尾产生迭代循环的第一步、第二步和第三步,其中
所述第一步包括产生字尾,所述字尾包括以U1+K开头并且以UN结束的N-K个单字的序列,其中K用符号表示小于N的非负整数值,
所述第二步包括将产生的字尾包括在所述合格查询字段值字尾集中,并且
所述第三步包括当N-K大于所述最小字尾长度时,则增大K并执行所述字尾产生迭代循环的第一步、第二步和第三步。
9.如权利要求8所述的方法,其中在完成所述字尾产生迭代循环的第一次迭代之前,K等于零,并且所述字尾与所述查询字段值相同。
10.如权利要求1所述的方法,其中每个限定子集记录的数据字段值包括与所述查询字段值字尾相同的单字的序列。
11.如权利要求10所述的方法,其中第一个限定子集记录的数据字段值包括多于N-J个单字的序列,并且其中所述序列中的最后N-J个单字与所述查询字段值字尾相同。
12.如权利要求10所述的方法,其中第一个限定子集记录的数据字段值包括多于N-J个单字的序列,并且其中所述序列中的第一个N-J个单字与所述查询字段值字尾相同。
13.如权利要求1所述的方法,其中当与所述查询字段值字尾比较时,每个限定子集记录的数据字段值与相似性得分相关联,并且其中所述相似性得分满足最小相似性得分标准。
14.如权利要求1所述的方法,其中识别所述数据集的限定子集的步骤包括访问从所述数据集推导的索引数据结构,所述索引数据结构包括多个项,所述多个项中的每个包括单字序列,并且使所述单字序列与所述数据集记录中的一个或更多个相关联。
15.如权利要求14所述的方法,其中识别所述数据集的限定子集的步骤还包括:
识别所述索引数据结构中的匹配项,其中当与所述查询字段值字尾比较时,所述匹配项的单字序列满足索引项相似性标准;以及
将与所述匹配项的单字序列相关联的所述一个或更多个数据集记录包括在所述数据集的所述限定子集中。
16.如权利要求15所述的方法,其中所述匹配项的单字序列与所述查询字段值字尾相同。
17.如权利要求1所述的方法,还包括将所述候选子集递送给过滤过程,其中所述过滤过程识别所述候选子集的过滤子集。
18.一种用于识别数据集的候选子集的方法,所述数据集包括用至少M个数据字段结构化的多个记录,M用符号表示非负整数值,每个记录的至少M个数据字段中的每个包括数据字段值,所述数据字段值包括一个或更多个单字的序列,所述方法包括:
辨识M个查询字段值,所述M个查询字段值中的每个与所述至少M个数据字段之一相关联,所述M个查询字段值中的每个包括以U1开头并且以UN结束的N个单字的序列,其中U用符号表示单字,并且N用符号表示非负整数值;以及
执行候选产生迭代循环的第一步、第二步、第三步、第四步、第五步和第六步,其中
所述第一步包括对于所述M个查询字段值中的每个识别查询字段值字尾,所述查询字段值字尾包括以U1+J开头并且以UN结束的N-J个单字的序列,其中J用符号表示小于N的非负整数值,其中N-J大于最小字尾长度,
所述第二步包括识别所述数据集的限定子集,其中当识别的查询字段值字尾中的至少一个与其相关联的数据字段值比较时,所述限定子集中的每个记录满足相似性标准,
所述第三步包括对于所述限定子集中的每个记录确定相似性得分,
所述第四步包括识别所述限定子集的阈值子集,其中所述阈值子集中的每个记录的相似性得分满足阈值相似性得分,
所述第五步包括将所述阈值子集中的每个记录包括在所述候选子集中,并且
所述第六步包括当所述候选子集中的记录的数量少于满意数量的候选时,则增大J并执行所述候选产生迭代循环的第一步、第二步、第三步、第四步、第五步和第六步;
其中识别所述数据集的限定子集的步骤包括访问从所述数据集推导的索引数据结构,所述索引数据结构包括关于每个记录的数据字段值的每个数据字段值字尾的索引数据结构项,每个数据字段值字尾包括单字序列,并且使所述单字序列与所述数据集记录中的一个或更多个相关联;
其中关于每个记录的数据字段值的每个数据字段值字尾的所述索引数据结构项进一步限定以下第一个索引数据结构项、第二个索引数据结构项、第三个索引数据结构项、第四个索引数据结构项以及第五个索引数据结构项:
所述第一个索引数据结构项包括第一项索引单字序列、零个第一项记录关键字、第一个第一项字尾指针以及第二个第一项字尾指针,所述第一个第一项字尾指针识别所述第二个索引数据结构项,并且所述第二个第一项字尾指针识别所述第三个索引数据结构项;
所述第二个索引数据结构项包括第二项索引单字序列、第一个第二项记录关键字、第二个第二项记录关键字以及第二项字尾指针,所述第二项索引单字序列的最后单字与所述第一项索引单字序列相同,所述第一个第二项记录关键字识别所述数据集中的第一个记录,所述第一个记录的数据字段值与所述第二项索引单字序列相同,所述第二个第二项记录关键字识别所述数据集中的第四个记录,所述第四个记录的数据字段值与所述第二项索引单字序列相同,并且所述第二项字尾指针识别所述第四个索引数据结构项;
所述第三个索引数据结构项包括第三项索引单字序列、第三项记录关键字以及零个第三项字尾指针,所述第三项索引单字序列的最后单字与所述第一项索引单字序列相同,并且所述第三项记录关键字识别所述数据集中的第二个记录,所述第二个记录的数据字段值与所述第三项索引单字序列相同;
所述第四个索引数据结构项包括第四项索引单字序列、零个第四项记录关键字以及第四项字尾指针,所述第四项索引单字序列的最后单字与所述第二项索引单字序列相同,并且所述第四项字尾指针识别所述第五个索引数据结构项;以及
所述第五个索引数据结构项包括第五项索引单字序列、第五项记录关键字以及零个第五项字尾指针,所述第五项单字序列的最后单字与所述第四项索引单字序列相同,并且所述第五项记录关键字识别所述数据集中的第三个记录,所述第三个记录的数字字段值与所述第五项索引单字序列相同。
19.如权利要求18所述的方法,其中在完成所述候选产生迭代循环的第一次迭代之前,J等于零,并且对于所述M个查询字段值中的每个,所述M个查询字段值字尾与所述M个查询字段值相同。
20.如权利要求18所述的方法,其中N对于所述M个查询字段值中的每个是相同的。
21.如权利要求18所述的方法,其中识别所述查询字段值字尾的步骤包括从合格查询字段值字尾集选择所述查询字段值字尾。
22.如权利要求21所述的方法,还包括在执行所述候选产生迭代循环的第一次迭代的第一步之前对所述M个查询字段值中的每个产生所述合格查询字段值字尾集。
23.如权利要求18所述的方法,其中每个限定子集记录的至少一个数据字段值包括与其相关联的查询字段值字尾相同的单字的序列。
24.如权利要求18所述的方法,其中识别所述数据集的限定子集的步骤包括访问索引数据结构,所述索引数据结构包括多个项,所述多个项中的每个包括单字序列,并且使所述单字序列与一个或更多个数据集记录相关联。
25.如权利要求24所述的方法,其中识别所述数据集的限定子集的步骤还包括:
识别所述索引数据结构中的匹配项,其中当与所述查询字段值字尾比较时,所述匹配项的单字序列满足索引项相似性标准;以及
将与所述匹配项的单字序列相关联的所述一个或更多个数据集记录包括在所述数据集的所述限定子集中。
26.如权利要求25所述的方法,其中所述匹配项的单字序列与所述查询字段值字尾相同。
27.一种用于识别数据集的候选子集的系统,所述数据集包括用数据字段结构化的多个记录,每个记录的数据字段包括数据字段值,所述数据字段值包括以U1开头并且以UN结束的N个单字的序列,其中U用符号表示单字,N用符号表示非负整数值,所述系统包括:
处理器,所述处理器可操作来实现:
索引数据结构产生器,所述索引数据结构产生器可操作来从所述数据集推导索引数据结构,其中所述索引数据结构包括:
关于每个记录的数据字段值的每个数据字段值字尾的索引数据结构项,每个数据字段值字尾包括以U1+J开头并且以UN结束的N-J个单字的序列,其中J用符号表示每个小于N的非负整数值,其中N-J大于或等于最小字尾长度,其中每个索引数据结构项包括:
索引单字序列,所述索引单字序列与所述数据字段值字尾相同;以及
使所述索引单字序列与至少一个限定数据集记录相关联的记录关联数据,其中所述至少一个限定数据集记录的数据字段值包含所述索引单字序列;以及
候选产生器,所述候选产生器可操作来使用所述索引数据结构识别所述数据集的候选子集;
关于每个记录的数据字段值的每个数据字段值字尾的所述索引数据结构项进一步限定以下第一个索引数据结构项、第二个索引数据结构项、第三个索引数据结构项、第四个索引数据结构项以及第五个索引数据结构项:
所述第一个索引数据结构项包括第一项索引单字序列、零个第一项记录关键字、第一个第一项字尾指针以及第二个第一项字尾指针,所述第一个第一项字尾指针识别所述第二个索引数据结构项,并且所述第二个第一项字尾指针识别所述第三个索引数据结构项;
所述第二个索引数据结构项包括第二项索引单字序列、第一个第二项记录关键字、第二个第二项记录关键字以及第二项字尾指针,所述第二项索引单字序列的最后单字与所述第一项索引单字序列相同,所述第一个第二项记录关键字识别所述数据集中的第一个记录,所述第一个记录的数据字段值与所述第二项索引单字序列相同,所述第二个第二项记录关键字识别所述数据集中的第四个记录,所述第四个记录的数据字段值与所述第二项索引单字序列相同,并且所述第二项字尾指针识别所述第四个索引数据结构项;
所述第三个索引数据结构项包括第三项索引单字序列、第三项记录关键字以及零个第三项字尾指针,所述第三项索引单字序列的最后单字与所述第一项索引单字序列相同,并且所述第三项记录关键字识别所述数据集中的第二个记录,所述第二个记录的数据字段值与所述第三项索引单字序列相同;
所述第四个索引数据结构项包括第四项索引单字序列、零个第四项记录关键字以及第四项字尾指针,所述第四项索引单字序列的最后单字与所述第二项索引单字序列相同,并且所述第四项字尾指针识别所述第五个索引数据结构项;以及
所述第五个索引数据结构项包括第五项索引单字序列、第五项记录关键字以及零个第五项字尾指针,所述第五项单字序列的最后单字与所述第四项索引单字序列相同,并且所述第五项记录关键字识别所述数据集中的第三个记录,所述第三个记录的数字字段值与所述第五项索引单字序列相同。
28.一种用于识别数据集的候选子集的系统,所述数据集包括用数据字段结构化的多个记录,每个记录的数据字段包括数据字段值,所述数据字段值包括一个或更多个单字的序列,所述系统包括:
索引数据结构,所述索引数据结构被储存在一个或更多个存储元件上,所述索引数据结构从所述数据集推导,所述索引数据结构包括多个项,所述多个项中的每个包括索引单字序列,并且使所述索引单字序列与所述数据集记录中的一个或更多个相关联;以及
候选产生器,所述候选产生器被实现在一个或更多个处理器上,所述候选产生器用于辨识查询字段值,所述查询字段值包括以U1开头并且以UN结束的N个单字的序列,其中U用符号表示单字,N用符号表示非负整数值,所述候选产生器还用于执行候选产生迭代循环的第一步、第二步、第三步和第四步,其中
所述第一步包括识别查询字段值字尾,所述查询字段值字尾包括以U1+J开头并且以UN结束的N-J个单字的序列,其中J用符号表示小于N的非负整数值,
所述第二步包括识别所述数据集的限定子集,其中当所述限定子集中的每个记录的数据字段值与所述查询字段值字尾比较时,所述记录满足相似性标准,并且其中识别所述限定子集的步骤包括进入所述索引数据结构;
所述第三步包括将识别的限定子集记录包括在所述候选子集中,并且
所述第四步包括当所述候选子集中的记录的数量少于满意数量的候选时,并且当N-J大于最小字尾长度时,则增大J并执行所述候选产生迭代循环的第一步、第二步、第三步和第四步;
其中关于每个记录的数据字段值的每个数据字段值字尾的所述索引数据结构项进一步限定以下第一个索引数据结构项、第二个索引数据结构项、第三个索引数据结构项、第四个索引数据结构项以及第五个索引数据结构项:
所述第一个索引数据结构项包括第一项索引单字序列、零个第一项记录关键字、第一个第一项字尾指针以及第二个第一项字尾指针,所述第一个第一项字尾指针识别所述第二个索引数据结构项,并且所述第二个第一项字尾指针识别所述第三个索引数据结构项;
所述第二个索引数据结构项包括第二项索引单字序列、第一个第二项记录关键字、第二个第二项记录关键字以及第二项字尾指针,所述第二项索引单字序列的最后单字与所述第一项索引单字序列相同,所述第一个第二项记录关键字识别所述数据集中的第一个记录,所述第一个记录的数据字段值与所述第二项索引单字序列相同,所述第二个第二项记录关键字识别所述数据集中的第四个记录,所述第四个记录的数据字段值与所述第二项索引单字序列相同,并且所述第二项字尾指针识别所述第四个索引数据结构项;
所述第三个索引数据结构项包括第三项索引单字序列、第三项记录关键字以及零个第三项字尾指针,所述第三项索引单字序列的最后单字与所述第一项索引单字序列相同,并且所述第三项记录关键字识别所述数据集中的第二个记录,所述第二个记录的数据字段值与所述第三项索引单字序列相同;
所述第四个索引数据结构项包括第四项索引单字序列、零个第四项记录关键字以及第四项字尾指针,所述第四项索引单字序列的最后单字与所述第二项索引单字序列相同,并且所述第四项字尾指针识别所述第五个索引数据结构项;以及
所述第五个索引数据结构项包括第五项索引单字序列、第五项记录关键字以及零个第五项字尾指针,所述第五项单字序列的最后单字与所述第四项索引单字序列相同,并且所述第五项记录关键字识别所述数据集中的第三个记录,所述第三个记录的数字字段值与所述第五项索引单字序列相同。
29.如权利要求28所述的系统,其中在完成所述候选产生迭代循环的第一次迭代之前,J等于零,并且所述查询字段值字尾与所述查询字段值相同。
30.如权利要求28所述的系统,其中识别所述查询字段值字尾的步骤包括产生所述查询字段值字尾。
31.如权利要求28所述的系统,其中识别所述查询字段值字尾的步骤包括从合格查询字段值字尾集选择所述查询字段值字尾。
32.如权利要求31所述的系统,其中所述候选产生器进一步用于在执行所述候选产生迭代循环的第一次迭代的第一步之前产生所述合格查询字段值字尾集。
33.如权利要求32所述的系统,其中产生所述合格查询字段值字尾集的步骤包括执行字尾产生迭代循环的第一步、第二步和第三步,其中
所述第一步包括产生字尾,所述字尾包括以U1+K开头并且以UN结束的N-K个单字的序列,其中K用符号表示小于N的非负整数值,
所述第二步包括将产生的字尾包括在所述合格查询字段值字尾集中,并且
所述第三步包括当N-K大于所述最小字尾长度时,则增大K并执行所述字尾产生迭代循环的第一步、第二步和第三步。
34.如权利要求33所述的系统,其中在完成所述字尾产生迭代循环的第一次迭代之前,K等于零,并且所述字尾与所述查询字段值相同。
35.如权利要求28所述的系统,其中每个限定子集记录的数据字段值包括与所述查询字段值字尾相同的单字的序列。
36.如权利要求35所述的系统,其中第一限定子集记录的数据字段值包括多于N-J个单字的序列,并且其中所述序列中的最后N-J个单字与所述查询字段值字尾相同。
37.如权利要求35所述的系统,其中第一限定子集记录的数据字段值包括多于N-J个单字的序列,并且其中所述序列中的第一个N-J个单字与所述查询字段值字尾相同。
38.如权利要求28所述的系统,其中当与所述查询字段值字尾比较时,每个限定子集记录的数据字段值与相似性得分相关联,并且其中所述相似性得分满足最小相似性得分标准。
39.如权利要求28所述的系统,其中识别所述数据集的限定子集的步骤还包括:
识别所述索引数据结构中的匹配项,其中当与所述查询字段值字尾比较时,所述匹配项的单字序列满足索引项相似性标准;以及
将与所述匹配项的单字序列相关联的所述一个或更多个数据集记录包括在所述数据集的所述限定子集中。
40.如权利要求39所述的系统,其中所述匹配项的单字序列与所述查询字段值字尾相同。
41.如权利要求28所述的系统,其中所述候选产生器进一步用于将所述候选子集递送给过滤过程,其中所述过滤过程识别所述候选子集的过滤子集。
42.如权利要求28所述的系统,其中所述候选产生器进一步用于在执行所述候选产生迭代循环的第一次迭代之前修改辨识的查询字段值。
43.如权利要求42所述的系统,其中修改辨识的查询字段值的步骤包括:
将等于U1的单字附加到所述查询字段值;
从所述查询字段值移除U1;以及
将所述N个单字的序列向左移,以使得以前在位置Ui上的单字在位置Ui-1上。
44.如权利要求28所述的系统,还包括:
索引数据结构产生器,所述索引数据结构产生器被实现在所述一个或更多个处理器上,所述索引数据结构产生器用于产生所述索引数据结构。
45.一种用于识别数据集的候选子集的系统,其中所述系统包括索引数据结构产生器以及候选产生器,所述索引数据结构产生器可操作来从所述数据集推导索引数据结构,所述候选产生器可操作来使用所述索引数据结构识别所述数据集的候选子集,所述数据集包括用数据字段结构化的多个记录,每个记录的数据字段包括数据字段值,所述数据字段值包括以U1开头并且以UN结束的N个单字的序列,其中U用符号表示单字,N用符号表示非负整数值,所述索引数据结构包括:
关于每个记录的数据字段值的每个数据字段值字尾的索引数据结构项,每个数据字段值字尾包括以U1+J开头并且以UN结束的N-J个单字的序列,其中J用符号表示每个小于N的非负整数值,其中N-J大于或等于最小字尾长度,其中每个索引数据结构项包括:
索引单字序列,所述索引单字序列与所述数据字段值字尾相同;以及
使所述索引单字序列与至少一个限定数据集记录相关联的记录关联数据,其中所述至少一个限定数据集记录的数据字段值包含所述索引单字序列;
其中所述记录关联数据包括:
零个或更多个记录关键字,每个记录关键字识别所述限定数据集记录之一,其中所述一个限定数据集记录的数据字段值与所述索引单字序列相同;以及
零个或更多个字尾指针,每个字尾指针识别所述索引数据结构中的相关项,所述相关项的单字序列包括N-J+1个单字,其中所述索引单字序列与所述相关项的索引单字序列的最后N-J个单字相同;
其中第一个索引数据结构项包括第一项索引单字序列、零个第一项记录关键字、第一个第一项字尾指针以及第二个第一项字尾指针,所述第一个第一项字尾指针识别第二个索引数据结构项,并且所述第二个第一项字尾指针识别第三个索引数据结构项;
其中所述第二个索引数据结构项包括第二项索引单字序列、第一个第二项记录关键字、第二个第二项记录关键字以及第二项字尾指针,所述第二项索引单字序列的最后单字与所述第一项索引单字序列相同,所述第一个第二项记录关键字识别所述数据集中的第一个记录,所述第一个记录的数据字段值与所述第二项索引单字序列相同,所述第二个第二项记录关键字识别所述数据集中的第四个记录,所述第四个记录的数据字段值与所述第二项索引单字序列相同,并且所述第二项字尾指针识别第四个索引数据结构项;
其中所述第三个索引数据结构项包括第三项索引单字序列、第三项记录关键字以及零个第三项字尾指针,所述第三项索引单字序列的最后单字与所述第一项索引单字序列相同,并且所述第三项记录关键字识别所述数据集中的第二个记录,所述第二个记录的数据字段值与所述第三项索引单字序列相同;
其中所述第四个索引数据结构项包括第四项索引单字序列、零个第四项记录关键字以及第四项字尾指针,所述第四项索引单字序列的最后单字与所述第二项索引单字序列相同,并且所述第四项字尾指针识别第五个索引数据结构项;以及
其中所述第五个索引数据结构项包括第五项索引单字序列、第五项记录关键字以及零个第五项字尾指针,所述第五项单字序列的最后单字与所述第四项索引单字序列相同,并且所述第五项记录关键字识别所述数据集中的第三个记录,所述第三个记录的数字字段值与所述第五项索引单字序列相同。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US41184710P | 2010-11-09 | 2010-11-09 | |
US61/411,847 | 2010-11-09 | ||
US13/173,345 US8745061B2 (en) | 2010-11-09 | 2011-06-30 | Suffix array candidate selection and index data structure |
US13/173,345 | 2011-06-30 | ||
PCT/US2011/059940 WO2012064826A2 (en) | 2010-11-09 | 2011-11-09 | Suffix array candidate selection and index data structure |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103282902A CN103282902A (zh) | 2013-09-04 |
CN103282902B true CN103282902B (zh) | 2016-11-16 |
Family
ID=46020609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180064535.XA Active CN103282902B (zh) | 2010-11-09 | 2011-11-09 | 字尾数组候选选择和索引数据结构 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8745061B2 (zh) |
CN (1) | CN103282902B (zh) |
WO (1) | WO2012064826A2 (zh) |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8468172B2 (en) | 2010-05-14 | 2013-06-18 | Sap Ag | Integrated application server and data server processes with matching data formats |
US9208179B1 (en) * | 2012-05-25 | 2015-12-08 | Narus, Inc. | Comparing semi-structured data records |
US8719236B2 (en) * | 2012-08-23 | 2014-05-06 | Microsoft Corporation | Selecting candidate rows for deduplication |
JP5994490B2 (ja) * | 2012-08-29 | 2016-09-21 | 富士通株式会社 | データ検索プログラム、データベース装置および情報処理システム |
US9311914B2 (en) * | 2012-09-03 | 2016-04-12 | Nice-Systems Ltd | Method and apparatus for enhanced phonetic indexing and search |
US9355105B2 (en) * | 2012-12-19 | 2016-05-31 | International Business Machines Corporation | Indexing of large scale patient set |
US10572461B2 (en) | 2013-02-25 | 2020-02-25 | 4medica, Inc. | Systems and methods for managing a master patient index including duplicate record detection |
US9129046B2 (en) * | 2013-02-25 | 2015-09-08 | 4medica, Inc. | Systems and methods for managing a master patient index including duplicate record detection |
US9230013B1 (en) * | 2013-03-07 | 2016-01-05 | International Business Machines Corporation | Suffix searching on documents |
US9874749B2 (en) | 2013-11-27 | 2018-01-23 | Magic Leap, Inc. | Virtual and augmented reality systems and methods |
US8762387B1 (en) * | 2013-07-31 | 2014-06-24 | Linkedin Corporation | Inverted indexes for accelerating analytics queries |
US20160248885A1 (en) * | 2013-10-07 | 2016-08-25 | Telefonica Digital España, S.L.U. | Method and System for Configuring Web Cache Memory and for Processing Requests |
WO2015106264A1 (en) * | 2014-01-13 | 2015-07-16 | Transcirrus | Automatic connection of nodes to a cloud cluster |
US9628107B2 (en) | 2014-04-07 | 2017-04-18 | International Business Machines Corporation | Compression of floating-point data by identifying a previous loss of precision |
US10210246B2 (en) | 2014-09-26 | 2019-02-19 | Oracle International Corporation | Techniques for similarity analysis and data enrichment using knowledge sources |
US10891272B2 (en) | 2014-09-26 | 2021-01-12 | Oracle International Corporation | Declarative language and visualization system for recommended data transformations and repairs |
US10915233B2 (en) | 2014-09-26 | 2021-02-09 | Oracle International Corporation | Automated entity correlation and classification across heterogeneous datasets |
CN104346458B (zh) * | 2014-10-31 | 2018-05-18 | 阿里巴巴(中国)有限公司 | 数据存储方法和存储设备 |
US9959299B2 (en) * | 2014-12-02 | 2018-05-01 | International Business Machines Corporation | Compression-aware partial sort of streaming columnar data |
US10909078B2 (en) | 2015-02-25 | 2021-02-02 | International Business Machines Corporation | Query predicate evaluation and computation for hierarchically compressed data |
US11449549B2 (en) * | 2015-02-26 | 2022-09-20 | Red Hat, Inc. | Storing entries as ordered linked lists |
US10180734B2 (en) | 2015-03-05 | 2019-01-15 | Magic Leap, Inc. | Systems and methods for augmented reality |
CN107533233B (zh) | 2015-03-05 | 2021-01-29 | 奇跃公司 | 用于增强现实的系统和方法 |
US10838207B2 (en) | 2015-03-05 | 2020-11-17 | Magic Leap, Inc. | Systems and methods for augmented reality |
US11593405B2 (en) * | 2015-04-21 | 2023-02-28 | International Business Machines Corporation | Custodian disambiguation and data matching |
US20170116238A1 (en) * | 2015-10-26 | 2017-04-27 | Intelliresponse Systems Inc. | System and method for determining common subsequences |
AU2016365422A1 (en) * | 2015-12-04 | 2018-06-28 | Magic Leap, Inc. | Relocalization systems and methods |
US11347706B2 (en) * | 2015-12-31 | 2022-05-31 | Scott W. McLellan | Rotor movement control and rotor wiring for rotor-based encryption machines and electronic equivalents |
WO2017131753A1 (en) | 2016-01-29 | 2017-08-03 | Entit Software Llc | Text search of database with one-pass indexing including filtering |
CN117741956A (zh) | 2016-08-02 | 2024-03-22 | 奇跃公司 | 固定距离虚拟和增强现实系统及方法 |
US10521411B2 (en) * | 2016-08-10 | 2019-12-31 | Moonshadow Mobile, Inc. | Systems, methods, and data structures for high-speed searching or filtering of large datasets |
US10812936B2 (en) | 2017-01-23 | 2020-10-20 | Magic Leap, Inc. | Localization determination for mixed reality systems |
AU2018236457B2 (en) | 2017-03-17 | 2021-04-29 | Magic Leap, Inc. | Mixed reality system with virtual content warping and method of generating virtual content using same |
CA3055218A1 (en) | 2017-03-17 | 2018-09-20 | Magic Leap, Inc. | Mixed reality system with color virtual content warping and method of generating virtual content using same |
IL303275B1 (en) | 2017-03-17 | 2024-04-01 | Magic Leap Inc | A mixed reality system with the assembly of multi-source virtual content and a method for creating virtual content using it |
US10685026B2 (en) * | 2017-04-11 | 2020-06-16 | Sap Se | Database query based match engine |
US10810472B2 (en) | 2017-05-26 | 2020-10-20 | Oracle International Corporation | Techniques for sentiment analysis of data using a convolutional neural network and a co-occurrence network |
US10936599B2 (en) | 2017-09-29 | 2021-03-02 | Oracle International Corporation | Adaptive recommendations |
US10885056B2 (en) | 2017-09-29 | 2021-01-05 | Oracle International Corporation | Data standardization techniques |
EP3499432A1 (de) * | 2017-12-12 | 2019-06-19 | Siemens Aktiengesellschaft | Bot für eine kommunikationsplattform |
CN110610450B (zh) * | 2018-06-15 | 2023-05-05 | 伊姆西Ip控股有限责任公司 | 数据处理方法、电子设备和计算机可读存储介质 |
EP3827299A4 (en) | 2018-07-23 | 2021-10-27 | Magic Leap, Inc. | SYSTEM OF MIXED REALITY WITH VIRTUAL CONTENT DISTORTION AND PROCESS FOR GENERATING VIRTUAL CONTENT WITH IT |
CN117711284A (zh) | 2018-07-23 | 2024-03-15 | 奇跃公司 | 场顺序显示器中的场内子码时序 |
US10949420B2 (en) * | 2018-07-31 | 2021-03-16 | Splunk Inc. | Identifying similar field sets using related source types |
CN109582693A (zh) * | 2018-11-26 | 2019-04-05 | 成都四方伟业软件股份有限公司 | 基于web的数据逻辑表达式处理方法及装置 |
CN110597855B (zh) * | 2019-08-14 | 2022-03-29 | 中山大学 | 一种数据查询方法、终端设备及计算机可读存储介质 |
CN110852046B (zh) * | 2019-10-18 | 2021-11-05 | 中山大学 | 一种文本后缀索引的分块归纳排序方法及系统 |
US11861301B1 (en) * | 2023-03-02 | 2024-01-02 | The Boeing Company | Part sorting system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5220622A (en) * | 1989-11-28 | 1993-06-15 | Stc Plc | Data base searching |
US6377945B1 (en) * | 1998-07-10 | 2002-04-23 | Fast Search & Transfer Asa | Search system and method for retrieval of data, and the use thereof in a search engine |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6141655A (en) | 1997-09-23 | 2000-10-31 | At&T Corp | Method and apparatus for optimizing and structuring data by designing a cube forest data structure for hierarchically split cube forest template |
US6910044B2 (en) * | 2000-09-20 | 2005-06-21 | Sap Aktiengesellschaft | Method and apparatus for structuring, maintaining, and using families of data |
JP3672242B2 (ja) * | 2001-01-11 | 2005-07-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | パターン検索方法、パターン検索装置、コンピュータプログラム及び記憶媒体 |
US6625600B2 (en) * | 2001-04-12 | 2003-09-23 | Telelogue, Inc. | Method and apparatus for automatically processing a user's communication |
US7089545B2 (en) * | 2002-12-17 | 2006-08-08 | International Business Machines Corporation | Detection of reduction variables in an assignment statement |
US7653643B2 (en) * | 2005-03-24 | 2010-01-26 | Microsoft Corporation | Method and apparatus for compressing a data set |
US8036878B2 (en) * | 2005-05-18 | 2011-10-11 | Never Wall Treuhand GmbH | Device incorporating improved text input mechanism |
US8117540B2 (en) * | 2005-05-18 | 2012-02-14 | Neuer Wall Treuhand Gmbh | Method and device incorporating improved text input mechanism |
KR100725664B1 (ko) * | 2005-08-26 | 2007-06-08 | 한국과학기술원 | 2단계 n-gram 역색인 구조 및 그 구성 방법과 질의처리 방법 및 그 색인 도출 방법 |
US7624098B2 (en) * | 2005-10-07 | 2009-11-24 | International Business Machines Corporation | Generating suitable data for statistical analysis |
US8099415B2 (en) * | 2006-09-08 | 2012-01-17 | Simply Hired, Inc. | Method and apparatus for assessing similarity between online job listings |
US7818316B2 (en) * | 2006-12-18 | 2010-10-19 | International Business Machines Corporation | Variable density query engine |
JP4928250B2 (ja) * | 2006-12-22 | 2012-05-09 | キヤノン株式会社 | 印刷ジョブの検索機能を備えた情報処理装置、情報処理方法、プログラム及び記憶媒体 |
US7996369B2 (en) * | 2008-11-14 | 2011-08-09 | The Regents Of The University Of California | Method and apparatus for improving performance of approximate string queries using variable length high-quality grams |
EP2402868A4 (en) * | 2009-02-26 | 2013-07-03 | Nat Univ Corp Toyohashi Univ | VOICE SEARCH DEVICE AND VOICE SEARCH METHOD |
CN102483752A (zh) * | 2009-06-03 | 2012-05-30 | 谷歌公司 | 用于部分输入的查询的自动完成 |
US20110179013A1 (en) * | 2010-01-21 | 2011-07-21 | Microsoft Corporation | Search Log Online Analytic Processing |
-
2011
- 2011-06-30 US US13/173,345 patent/US8745061B2/en active Active
- 2011-11-09 WO PCT/US2011/059940 patent/WO2012064826A2/en active Application Filing
- 2011-11-09 CN CN201180064535.XA patent/CN103282902B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5220622A (en) * | 1989-11-28 | 1993-06-15 | Stc Plc | Data base searching |
US6377945B1 (en) * | 1998-07-10 | 2002-04-23 | Fast Search & Transfer Asa | Search system and method for retrieval of data, and the use thereof in a search engine |
Also Published As
Publication number | Publication date |
---|---|
CN103282902A (zh) | 2013-09-04 |
US20120117076A1 (en) | 2012-05-10 |
WO2012064826A3 (en) | 2012-07-05 |
WO2012064826A2 (en) | 2012-05-18 |
US8745061B2 (en) | 2014-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103282902B (zh) | 字尾数组候选选择和索引数据结构 | |
US8266152B2 (en) | Hashed indexing | |
US7158996B2 (en) | Method, system, and program for managing database operations with respect to a database table | |
CN103902698B (zh) | 一种数据存储系统和存储方法 | |
US7827181B2 (en) | Click distance determination | |
CN107729371B (zh) | 区块链的数据索引及查询方法、装置、设备及存储介质 | |
JP3914662B2 (ja) | データベース処理方法及び実施装置並びにその処理プログラムを記憶した媒体 | |
US9251289B2 (en) | Matching target strings to known strings | |
WO2019228015A1 (zh) | 基于移动端NoSQL数据库的索引创建方法及装置 | |
CN103605750B (zh) | 一种快速的分布式数据分页方法 | |
US8965935B2 (en) | Sequence matching algorithm | |
US7725448B2 (en) | Method and system for disjunctive single index access | |
CN110019637B (zh) | 一种标准文献检索的排序算法 | |
Diao et al. | Efficient exploration of interesting aggregates in RDF graphs | |
Alam et al. | Performance of point and range queries for in-memory databases using radix trees on GPUs | |
CN105956203A (zh) | 一种信息存储方法、信息查询方法、搜索引擎装置 | |
Lu et al. | Boosting the quality of approximate string matching by synonyms | |
Slavov et al. | Fast processing of SPARQL queries on RDF quadruples | |
Zecchini et al. | Entity Resolution on Camera Records Without Machine Learning. | |
US7774347B2 (en) | Vortex searching | |
JPH10187739A (ja) | 情報検索装置 | |
Yin et al. | Dynamic multi-probe lsh: An i/o efficient index structure for approximate nearest neighbor search | |
Vieira et al. | Incremental entity resolution process over query results for data integration systems | |
US20200117735A1 (en) | Method for identifying complex textual patterns containing keywords within data records | |
Bellaouar et al. | Efficient list-based computation of the string subsequence kernel |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |