太阳城集团

  • / 23
  • 下载费用:30 金币  

对文档的查询和索引.pdf

摘要
申请专利号:

CN201380064583.8

申请日:

2013.12.09

公开号:

CN105027115A

公开日:

2015.11.04

当前法律状态:

授权

有效性:

有权

法律详情: 授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20131209|||公开
IPC分类号: G06F17/30 主分类号: G06F17/30
申请人: 微软技术许可有限责任公司
发明人: L·张; M·布度; Y·于; G·D·普洛特金
地址: 美国华盛顿州
优先权: 13/709,064 2012.12.10 US
专利代理机构: 上海专利商标事务所有限公司31100 代理人: 陈小刚
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201380064583.8

授权太阳城集团号:

||||||

法律状态太阳城集团日:

2018.10.16|||2015.12.02|||2015.11.04

法律状态类型:

太阳城集团授权|||实质审查的生效|||公开

摘要

太阳城集团根据文档集合生成文档索引并将其用来标识匹配一个或多个查询的文档。为每一文档生成具有与文档的每一对象相对应的节点的树。所生成的树的各节点被归并或组合以生成文档索引,它本身是树。另外,为该索引的每一节点生成标识该节点源自的一个或多个树的倒排索引。在接收到查询时,该查询首先对照文档索引树来执行。在执行期间,正确的集合操作被应用于与该查询所匹配的节点相关联的倒排索引。所得的集合标识可与该查询相匹配的文档。该查询随后在所标识的文档上执行。

权利要求书

权利要求书
1.  一种方法,包括:
由计算设备接收多个文档,其中每一文档包括多个对象;
对于每一文档,由所述计算设备生成表示所述文档的图,其中每一个图包括与所表示的文档的每一对象相对应的节点;
通过由所述计算设备归并所生成的图的各节点来生成文档索引,其中所述文档索引中的每一节点包括包含该节点的一个或多个图的标识符;
由所述计算设备接收查询;
由所述计算设备使用所生成的文档索引来标识所述多个文档中的作为所述查询的响应的一个或多个文档;
由所述计算设备在所标识的一个或多个文档上运行所述查询以生成所标识的一个或多个文档的子集;以及
由所述计算设备提供一个或多个所标识的文档的所述子集作为所述查询的响应。

2.  如权利要求1所述的方法,其特征在于,所述多个所标识的文档包括文档片段。

3.  如权利要求1所述的方法,其特征在于,所述查询包括多个子查询,并且使用所生成的文档索引来标识所述多个文档中的作为所述查询的响应的一个或多个文档包括:
对于每一子查询:
确定所述文档索引中的与所述子查询相匹配的节点;以及
对于每一所确定的与所述子查询相匹配的节点,确定由所确定的节点所标识的图;
为每一子查询确定所确定的图的并集;以及
将由所确定的图并集的各个图来表示的一个或多个文档标识为对所述查询进行响应的所标识的一个或多个文档。

4.  如权利要求1所述的方法,其特征在于,所述图包括树。

5.  如权利要求1所述的方法,其特征在于,所述查询包括多个子查询,并且所述方法还包括:
根据接收到的查询的每一子查询来生成矩阵;
根据每一子查询生成矩阵操作;
根据所述文档索引生成矩阵;以及
通过评估根据接收到的查询的每一子查询所生成的矩阵、根据所述文档索引生成的矩阵、以及根据每一子查询生成的矩阵操作,来标识所述多个文档中的作为所述查询的响应的一个或多个文档。

6.  如权利要求1所述的方法,其特征在于,还包括生成接收到的查询的图,并且使用所生成的文档索引来标识所述多个文档中的作为搜索查询的响应的一个或多个文档包括:对所述文档索引与接收到的查询的所生成的图的积执行图搜索。

7.  一种系统,包括:
计算设备;
索引引擎,所述索引引擎被适配成根据多个文档生成文档索引,其中所述文档索引包括多个节点,并且每一节点标识一个或多个文档;以及
查询引擎,其被适配成:
接收查询;
使用所生成的文档索引来标识所述多个文档中的作为所述查询的响应的一个或多个文档;
在所述一个或多个文档上运行所述查询以生成所标识的一个或多个文档的子集;以及
提供所述一个或多个文档的所述子集作为所述查询的响应。

8.  如权利要求7所述的系统,其特征在于,所述索引引擎被适配成根据多个文档生成文档索引包括:所述索引引擎被适配以:
对于每一文档,生成表示所述文档的图,其中每一个图包括与所表示的文 档的对象相对应的节点;以及
通过归并所生成的图的各节点来生成文档索引,其中所述文档索引中的每一节点包括包含该节点的一个或多个图的标识符。

9.  如权利要求8所述的系统,其特征在于,所述查询包括多个子查询,并且所述查询引擎被适配成使用所生成的文档索引来标识所述多个文档中的作为所述查询的响应的一个或多个文档包括:所述查询引擎被适配以:
对于每一子查询:
确定所述文档索引中的与所述子查询相匹配的节点;以及
对于每一所确定的与所述子查询相匹配的节点,确定由所确定的节点所标识的图;
为每一子查询确定所确定的图的并集;以及
标识由所述图的所确定的并集的各个图所表示的一个或多个文档。

10.  如权利要求7所述的系统,其特征在于,所述多个文档是JavaScript对象记法(JSON)文档和XML文档中的一者或多者。

说明书

说明书对文档的查询和索引
背景
JavaScript对象记法(JSON)是数据交换格式,该数据交换格式正在变成对商品和研究产品的选择的格式。在JSON文档集合以及诸如XML和HTML等其它文档格式上执行的最典型的操作之一是结构查询的处理,除了特定字段值之外,它基于结构模式对数据进行匹配。结构查询的可表达性使得难以应用针对关系数据和查询设计的索引过程。缺少与JSON文档相关联的模式进一步妨碍了用于(例如,使用辅助索引)加速查询处理的传统技术的适用性。
概述
根据JSON文档集合生成文档索引并将其用来标识可匹配任何给定查询的文档。为每一文档生成具有与文档的每一对象相对应的节点的树。所生成的树的各节点被归并或组合以生成文档索引,文档索引它本身是树。另外,为该索引的每一节点生成倒排索引,该倒排索引标识该节点源自的一个或多个文档树。在接收到查询时,该查询首先对照文档索引树来执行:在执行期间,正确的集合操作被应用于与该查询所匹配的节点相关联的倒排索引。所得的集合标识可与该查询相匹配的文档。该查询随后在所标识的文档上重新执行。在索引上运行查询将不错失任何匹配的文档,但可能返回不与该查询相匹配的一些文档。
在一实现中,计算设备接收多个文档。每一文档包括多个对象。对于每一文档,生成表示该文档的图。每一个图包括与所表示的文档的每一对象相对应的节点。通过归并所生成的图的各节点来生成文档索引。文档索引中的每一节点包括包含该节点的一个或多个图的标识符。由计算设备接收查询。使用所生成的文档索引来标识该多个文档中的作为该查询的响应的一个或多个文档。该查询在所标识的一个或多个文档上重新执行以确定该一个或多个文档的与该查询相匹配的子集。响应于该查询来提供查询执行以找出这一子集的结果,作为整个文档或文档片段。
在一实现中,计算设备接收文档索引。文档索引包括多个节点,且每一节 点包括多个图中的一个或多个图的标识符,并且每一个图表示多个文档中的文档。由计算设备接收查询。该查询包括多个子查询。对于每一子查询:确定文档索引中的与子查询相匹配的节点;且对于与子查询相匹配的每一所确定的节点,确定由所确定的节点的标识符所标识的一个或多个图。为每一子查询确定所确定的一个或多个图的并集。标识由所确定的图的并集所表示的文档。该查询在所标识的一个或多个文档上重新执行,以确定该一个或多个文档的与该查询相匹配的子集。响应于该查询来提供查询执行以找出这一子集的结果,作为整个文档或文档片段。
提供本概述以便以简化的形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。
附图说明
当结合附图进行阅读时,可以更好地理解以上概述以及以下对说明性实施例的详细说明。出于说明各实施例的目的,在附图中示出各实施例的示例性构造;然而,各实施例不局限于所公开的具体方法和手段。在附图中:
图1是用于履行查询的示例环境的图示;
图2是示例文档引擎的图示;
图3是示例树的图示;
图4是另一示例树的图示;
图5是示例文档索引的图示;
图6是使用文档索引来履行查询的方法的实现的操作流程;
图7是使用文档索引来履行查询的方法的另一实现的操作流程;以及
图8示出了在其中可实现各示例实施例和各方面的示例性计算环境。
详细描述
图1是用于履行查询的示例环境100的图示。环境100可以包括客户端设备110、以及通过网络120与客户端设备110通信的文档引擎150。网络120可以是包括公共交换电话网(PSTN)、蜂窝电话网和分组交换网(例如,因特网)的各种网络类型。
在一些实现中,客户端设备110可以包括台式个人计算机、工作站、膝上 计算机、智能电话、蜂窝电话或任意启用WAP的设备或能够直接或间接与网络120对接的任意其它计算设备。例如,可使用诸如图8中所示的计算设备800的通用计算设备来实现客户端设备110。尽管仅示出一个客户端设备110,但这仅用于说明目的,对于可被支持的客户端设备的数量不存在限制。
文档引擎150可以从客户端设备110接收一个或多个查询115。文档引擎150可以基于文档160生成作为查询115的响应的结果集125。结果125可包括作为查询115的响应的文档160的链接、文档片段、或其他指示符。文档160可包括各种文档类型,包括HTML文档、XML文档、以及JavaScript对象记法(JSON)文档。可以支持其他类型的文档。文档160可以不与模式相关联。
在一些实现中,文档160中的每一个可具有标记和一个或多个对象。每一对象本身可具有标记和一个或多个对象或值。另外,每一文档和对象可包括一个或多个阵列。每一阵列可具有标记且可以是值的阵列或对象的阵列。可以使用或支持其他文档语法和/或类型。
出于简化的目的,本文描述的文档160被描述成值是串类型的。然而,本文描述的实现可以支持其他类型。
例如,用于使用以下语法来存储与两个公司相关的数据的两个文档160(文档A和文档B)是:
{
      “位置”:
      [
          {“国家”:“德国”,“城市”:“巴黎”},
          {“国家”:“法国”,“城市”:“巴黎”}
      ],
      “总部”:“比利时”,
      “出口”:
      [
          {“城市”:“莫斯科”},
          {“城市”:“雅典”}
          ]
      }
      文档A
      {
          “位置”:
          [
            {“国家”:“德国”,“城市”:“柏林”},
          ],
          “总部”:“意大利”,
          “出口”:
          [
              {“城市”:“柏林”,“经销商”:[{“名字”:“汉斯”}]},
              {“城市”:“阿姆斯特丹”}
          ]
      }
      文档B
如参考图2进一步描述的,文档引擎150可以根据文档160生成文档索引170,并且可以使用文档索引170来生成响应于查询115的结果125。在一些实现中,文档引擎150可以根据文档160生成图或树或其他数据结构,且可以提供归并所生成的图来生成文档索引170。文档索引170可由文档引擎150使用来标识作为查询115的响应的文档160,从而向用户提供经改进的搜索体验。
图2是示例文档引擎150的图示。文档引擎150可包括但不限于树引擎210、索引引擎220以及查询引擎230。可以支持更多或更少的组件。文档引擎150的各组件中的一些或全部可以使用诸如例如计算设备800的一个或多个通用计算设备来实现。
树引擎210可以根据文档160生成一个或多个树215。可为文档160中的每一文档生成树。在一些实现中,树125中的每一个可包括多个节点。树的每 一内部节点可以表示文档中的对象且可具有与该对象的标记相对应的标记。树的每一叶节点可以表示值且可具有与该值相对应的标记。表示叶节点的串值的标记总是与正常对象标记区分开,甚至在它们具有相同的拼写时。文档160中的阵列可被重写为具有数值标记的对象,且可以在树中表示为内部节点类对象。树215中的每一个可具有根节点,根节点具有空串值。注意,其他数据结构可被用于树215;例如在一些实现中,每一树可被实现为有向图。
例如,图3示出了根据文档A生成的示例树310,且图4示出了根据文档B生成的示例树410。如可从图3和4中看到的,树310和410中的每一个分别包括表示来自文档A和B的每一对象和值的节点。如上所述,与位置和出口标记相对应的阵列已被重写在每一树中作为具有数值标记的对象。
在一些实现中,树引擎210可以根据文档160递归地生成树215。例如,树引擎210可以使用以下函数buildTree来构造树215,其中“rootLabel(根标记)”是附连到所生成的树的根的标记,且“Document(文档)”是要根据其生成树的文档。可以使用用于根据文档160生成树215的其他方法。


查询引擎230可以匹配包括一个或多个子查询的查询115。每一子查询本身是个查询且可包括一个或多个运算符,该一个或多个运算符被称为“节点匹配器”。在一实现中,查询引擎230可以接受具有以下句法的匹配查询115:

节点匹配器(或nm)是在节点的标记匹配节点匹配器所指定的一个或多个值时返回真的任意布尔函数。节点匹配器可被进一步分类成匹配内部节点的标记的标记匹配器和只匹配基值的值匹配器。这些中的任一者可以调用任意布尔函数。
可以通过使用来自所述句法的运算符组合子查询,来使用以上句法生成查询115。每一子查询可以是节点匹配器。查询引擎230可通过解决接收到的查询的每一子查询并基于特定运算符(例如,&)来组合结果,来递归地解决该查询。
查询引擎230可以将查询115应用于树215的根节点,并返回树215的一组节点,该组节点的值与查询115相匹配。如果返回非空一组节点,则查询q与树t相匹配。一般而言,查询q被应用在节点v处。各运算符的含义在以下递归地定义:

节点匹配器nm可被查询引擎230应用于节点的标记。如果应用于该标记的节点匹配器返回“真”,则查询引擎230可以返回节点本身,否则返回空集。一些示例节点匹配器函数可包括匹配节点的特定标记的函数、匹配大于指定长度的标记的函数、以及匹配包括特定子串的标记的函数。可以使用其他类型的节点匹配器。
运算符“∈”可以表示空查询(它可以使用空串来被写入)。∈运算符可以匹配查询引擎230将它应用到的任何节点。
任何运算符“?”是匹配所有标记的特殊节点匹配器。与∈运算符类似,该任何运算符可以与查询引擎230将它应用到的任何节点相匹配。“?”运算符的各单独版本可被用于标记匹配器和值匹配器(例如,通过用@?来表示值匹配器)。
子运算符“/”匹配节点的所有子节点。子运算符匹配任何内部节点,并且在被查询引擎230应用于叶节点时产生空集。
顺序运算符组合两个任意查询q1和q2并且在查询115中由两个查询的并置来表示。查询引擎230可以通过将q1应用于节点v并随后将q2应用于对节点v应用q1的结果,来将顺序运算符应用于查询q1和q2。应用q2的结果的并集是组合查询的结果。
或运算符“|”以及与运算符“&”两者组合两个查询q1和q2。对于或运 算符(or),查询引擎230可以返回查询q1和q2的结果的并集。对于与运算符(and),查询引擎230可以返回查询q1和q2的结果的交集。
星运算符*基于来自正则表达式的Kleene星运算符。查询引擎230将星运算符应用于查询q的结果可以是将查询q依次应用于节点0次、1次、2次等等的结果的并集。例如,查询“/*/”柏林””在被查询引擎230应用时,可以产生包括包含被标记为“柏林”的子节点的所有树的结果。星运算符的“有界”版本也可被使用,它匹配至多若干次,或指定次数以上。
按位异或运算符^被用来确定查询q是否匹配任何事物。在查询引擎230将按位异或运算符应用于查询q的结果时,如果结果非空则查询引擎230返回当前节点而非返回结果,结果被查询引擎230丢弃且只返回当前节点。
附加“切(cut)”运算符可由查询引擎230使用来只返回查询所匹配的文档上的片段。切运算符的句法由以下给出:
Userquery=query!query(用户查询=查询!查询)。
在对照文档匹配切运算符时,该算法可以计算两个匹配节点集合,如同切是分开两个查询的“顺序”运算符一样。然而,查询q1!q2的最终结果可以根据具有由q1匹配的根节点的所有子文档来组成,且每一个包含在所述子文档中的每一个的根节点处开始由q2横跨的所有节点。
索引引擎220可以根据树215生成文档索引170。文档索引170可以是所有树215的近似概括。在一些实现中,文档索引170可以是通过组合或归并一些或全部树215来生成的树。因而,文档索引170可包括内部节点和叶节点两者。然而,内部结点可以只与其他内部节点归并,且叶节点可以只与其他叶节点归并。文档索引170中的每一节点可以与树215的一组节点相对应。在归并节点时,所得的节点可以包含归并节点的所有标记。因而,索引170中的一些节点可具有多个标记。特殊标记“*”可被用来表示“所有可能的标记”,或者可以被用来近似索引节点中的标记集合(在它变得过大的情况下)。对应关系可以由将文档索引170中的每一节点与对应树215进行关联的映射来表示。该映射可由索引引擎220生成。
查询引擎230可以对照文档索引170搜索接收到的查询115以使用文档索引170和映射来生成结果125。例如,查询引擎230可以确定来自索引170的 与查询115相匹配的节点。查询引擎230可以使用该映射来确定具有映射到所确定的节点的各节点的树215。与所确定的节点相对应的文档160可被用来再次执行查询,从而得到文档160的子集。该子集可被呈现为结果125。
该映射可以是被称为倒排索引的映射。文档索引170中的每一节点可包括倒排索引。节点的倒排索引可以标识节点在生成索引170时到来的树125。
例如,图5是通过归并图3和4中示出的树310和410来生成的示例文档索引510的图示。具有圆形的节点表示作为树310和树410两者的一部分的节点。具有三角形的节点表示只是树410的一部分的节点。具有矩形的节点表示只是树310的一部分的节点。因而,具有圆形的任何节点具有指示源自树310和树410两者的节点的倒排索引{310,410},具有三角形的任何节点具有指示源自树410的节点的倒排索引{410},而具有矩形的任何节点具有指示源自树310的节点的倒排索引{310}。
查询引擎230可以对照文档索引170匹配接收到的查询115以确定来自文档索引170的匹配节点集合。与每一匹配节点相关联的倒排索引可由查询引擎230用来检索可匹配查询115的树215。查询115随后可以对照被用来生成检索到的树215的文档160再次执行,且结果被返回给与查询115相关联的客户端设备110来作为结果125。
因为文档索引170是树215,所以用于匹配树215上的查询115的上述递归算法也可在少许修改的情况下由查询引擎230用来匹配文档索引170上的查询115。对于查询115运算符和节点匹配器,在被应用于文档索引170时查询的含义如下递归地定义。

如可理解的,取决于查询115中的操作,文档索引170的被发现与查询相匹配的各节点可以产生过度保守的结果(即,可能返回非匹配节点)。为了降低虚假肯定的数量,在一些实现中,在处理查询的每一部分时,查询引擎230可以记录文档索引170的节点被选择成结果125的“原因”。该原因可以是特定树125与所选或匹配节点相关联。因此,在处理查询115的每一步骤处,查询引擎230可以确定树215与任何所选或匹配节点相关联。相关联的树215可以由查询引擎230使用与每一节点相关联的倒排索引来确定。
查询引擎230可以通过基于与查询115的各子查询相关联的特定运算符组合根据每一子查询所确定的树215来确定与查询115相关联的结果。例如,对于或运算符和按位异或运算符,查询引擎230可以取得子查询所产生的树215的并集。例如,对于与运算符和子运算符,查询引擎230可以取得子查询所产生的树215的交集。
对于这些实现,与应用于文档索引的节点v的查询q的所选或匹配节点u相关联的树215的原因或集合J被定义为J(q,v,u)。对于在v处运行的查询q的结果中的每一节点u,集合J(q,v,u)可以通过表示树215集合来解释u为什么在结果中。对于查询运算符和节点匹配器,在被应用于包括J(q,v,u)的文档 索引170时查询的含义如下递归地定义。

在一些实现中,文档引擎150可以基于一个或多个点阵来处理查询115,而非使用上述基于树的方法。每一查询115可被建模为用v和u来索引的矩阵,其中u是来自对节点v应用查询的结果的节点之一。该矩阵可具有点阵值元素。点阵L可以是幂集点阵且可包括树215的子集。点阵可以具有操作∧和∨,底部和顶部元素由⊥和来表示。对于索引的两个有限集A和B,MatL(A,B)可以是用来自A和B的值来索引并具有来自点阵L的值的矩阵的集合。如果M是这样的矩阵,则M[a,b]是该矩阵的作为来自L的值的元素,其中a是A的元素且b是B的元素。
索引引擎220可以将树215和文档索引170中的每一者建模成一个或多个标记L的树。标记L的树t可以采取t=(V,C,label)的形式,其中V是节点集合,C∈MatL(V,V)被称为子矩阵,且label∈MatL(V,Σ)被称为标记矩阵。Σ表示所有可能的标记。每一矩阵可以取来自点阵L的值。每一节点匹配器函数nm可被定义为向量,其中nm∈VecL(Σ)可被编码为指示Σ中的每一标记出现的位置的向量。TA表示用来自A的元素索引的向量,其中所有值是点阵的顶部元素。对于向量A,ΔA表示全部底部元素且对角线具有A的元素的对角矩阵。
接收到的查询q在被应用于标记L的树t时可被表示为具有来自点阵L的值的方阵Query(q)∈MatL(V,V)。方阵Query(q)可以由查询引擎230根据接收到的查询q来归纳地计算。查询115在由查询引擎230应用时的意义可以如下递归地定义:

在一些实现中,查询引擎230可以根据接收到的查询115的每一子查询和文档索引来生成矩阵。查询引擎115还可基于每一子查询来生成矩阵操作。查询引擎230随后可通过评估根据接收到的查询的每一子查询所生成的矩阵、根据所述文档索引生成的矩阵、以及根据每一子查询生成的矩阵操作,来标识所述多个文档中的作为查询115的响应的一个或多个文档。查询引擎230随后可针对所标识的文档来运行查询以确定所标识的一个或多个文档的作为查询115的响应的子集。
在一些实现中,并非使用上述基于树和基于点阵的方法,文档引擎150可以使用非确定性有限状态自动机(NFA)来处理查询115。。对于给定树T和查询q,由查询引擎230将查询q针对树T进行匹配可被表达为图上的图搜索,该图被定义为T和依赖于查询q的另一图A(q)的积。如下文进一步讨论的,查询引擎230对A(q)的构造可类似于将正则表达式变换成自动机的过程。
NFA N可被描述为元组N=(Q,∏,s,t),其中Q是状态集合,s∈Q是NFA的起始状态,t∈Q是NFA的最终状态,且∏描述两个状态之间的转移。每一转移可以是包括∈-转移、节点匹配器转移(μ-转移)、以及子转移(τ-转移)的三个类型之一。
查询引擎230可以根据接收到的查询q来递归地构造NFA N[q]:它首先递归地构造q的每一子查询的NFA,并随后将这些NFA组合成q的NFA。以下更详细地描述构造过程。
N[nm]具有两个状态s和t,从s到t的唯一转移用nm来标记。
N[/]具有两个状态s和t,且存在从s到t的τ-转移。
N[q1q2]是由查询引擎230串接N1和N2、归并t1和s1、并令s=s1且t=t2来获得的。.
N[q1|q2]可由查询引擎230添加新起始状态s和最终状态t,并添加从s到s1和s2的∈-转移,以及从t1、t2到t的∈-转移来获得。
N[q1*]可由查询引擎230添加从t到s的∈-转移来获得。
N[q1&q2]可由查询引擎230取得两个NFA的积来获得。对于∈或μ-转移,π1=(q1,q’1)∈∏1,对于每一q2∈Q2,查询引擎230可以添加具有相同转移类型的从(q1,q2)到(q’1,q2)的转移。在π1是μ-转移时,查询引擎230可以指派nmπ=nmπ1。对称地,查询引擎230可以执行∏2中的类似指派。另外,对于每一τ-转移(q1,q’1)∈∏1和每一τ-转移(q2,q’2)∈∏2,查询引擎23可以在∏中添加从(q1,q2)到(q’1,q’2)的τ-转移。此外,查询引擎230可以令s=(s1,s2)且t=(t1,t2)。
可以通过反转为q1构造的图的方向并搜索该图以获得^q1的结果来不同地处理^q1。一旦^q1的结果被计算得到,它就可被当作查询中的节点匹配器,该查询将它包括作为子查询。
在如上所述根据查询115构造了NFA之后,查询引擎230可以根据NFA来构造图A(q)。在一些示例实现中,查询引擎230可以通过为NFA中的每一转移生成边来构造图。在转移是∈-转移的情况下,对于该图中的每一顶点v,查询引擎230可以添加从(v,q1)到(v,q2)的边并可以向该边指派权重T(即,真)。在转移是μ-转移的情况下,对于该图中的每一顶点v,查询引擎230可以添加从(v,q1)到(v,q2)的边并可以向该边指派权重nmπ。在转移是τ-转移的情况下,对于该图中的每一顶点v,查询引擎230可以添加从(v,q1)到(v,q2)的边并可以向该边指派权重C(u,v)。
一旦构造了该图,查询引擎230就可以搜索该图以计算查询结果。图搜索可以使用标准图搜索算法来完成,如宽度优先搜索。
图6是使用文档索引170来履行查询的方法600的实现的操作流程。方法600可以由文档引擎150来实现。
在601,接收多个文档。文档160可以由文档引擎150来接收。文档可以是JSON文档或XML文档。每一文档可包括多个对象。每一对象可包括一个或多个对象,且还可包括一个或多个值。
在603,对于每一文档,生成表示该文档的图。该图可由文档引擎150的树引擎210来生成。在一些实现中,图可以是树。树引擎210可以通过生成文档的每一对象的节点来递归地生成文档的树215。
在605,生成文档索引。文档索引170可由索引引擎220通过归并或组合所生成的图的各节点来生成。文档索引170还可包括每一节点的倒排索引。节点的倒排索引可以标识该节点作为其一部分的一个或多个图。
在607,接收查询。查询115可由文档引擎150的查询引擎230从客户端设备110接收。查询115可包括一个或多个子查询,且每一子查询可以对应于运算符或节点匹配器。查询115可以是请求标识匹配查询115的一个或多个文档160。
在609,标识作为该查询的响应的一个或多个文档。一个或多个文档160可以由查询引擎230使用文档索引170来标识。查询引擎230可以确定来自文档索引170的与查询115相匹配的各节点,并且可以使用与所确定的节点相关联的倒排索引来标识一个或多个相关联的图。在一些实现中,查询引擎230可以递归地处理查询115的每一子查询。对于第一子查询,查询引擎230可以标识文档索引170的与第一子查询相匹配的节点。查询引擎230随后可标识匹配第一子查询的所标识的节点中的与下一子查询相匹配的节点,以此类推。如上所述,匹配子查询中的每一者的节点的集合随后被用来使用与每一节点相关联的倒排索引来确定作为查询115的响应的文档160。
在611,在所标识的一个或多个文档上运行查询以生成一个或多个文档的子集。查询可以由查询引擎230通过针对所标识的一个或多个文档来匹配查询并为该子集选择任何匹配的文档来运行。作为查询结果的文档可包括所标识的文档的片段。
在613,提供文档或文档片段。文档或片段可由文档引擎150提供给发出查询115的客户端设备110来作为结果。在提供了结果之后,方法600可以在607处继续。
图7是使用文档索引170来履行查询115的方法700的实现的操作流程。方法700可以由文档引擎150来实现。
在701,接收查询。查询115可由文档引擎150的查询引擎230从客户端设备110接收。查询115可包括一个或多个子查询,且每一子查询可以对应于运算符或节点匹配器。查询115可以是请求标识匹配查询115的一个或多个文档160。
在703,对于每一子查询,确定匹配该子查询的节点。匹配节点可以由查询引擎230根据文档索引170来确定。如果其值匹配与子查询相关联的节点匹配器或运算符,则节点可匹配查询。文档索引170可以是包括多个节点的图(诸如,树)。每一节点可以是作为一个或多个图的一部分的节点,每一个图表示文档160之一。文档索引的每一节点可具有标识它作为其一部分的图的倒排索引。
在705,对于为每一子查询确定的每一节点,确定每一节点所标识的图。图可以是树,且可以由查询引擎230使用与文档索引170中的每一节点相关联的倒排索引来确定。
在707,确定所确定的一个或多个图的并集。并集可以由查询引擎230来确定。并集可以是为每一子查询所确定的匹配节点所标识的图的并集。
在709,标识所确定的并集的图所表示的文档。文档160可以由查询引擎330来标识。
在711,在所标识的文档上运行查询以生成文档的子集。查询可以由查询引擎230通过针对所标识的文档来匹配查询并为该子集选择任何匹配的文档或文档片段来运行。
在713,提供文档或文档片段。文档或文档片段可被提供给提供查询115的客户端设备110来作为结果125。在提供了结果之后,方法700可以在701处继续。
图8示出了在其中可实现各示例实施例和各方面的示例性计算环境。计算系统环境只是合适的计算环境的一个示例,并非旨在对使用范围或功能提出任何限制。
可以使用很多其他通用和专用计算机系统环境或配置。适合使用的公知的 计算系统、环境和/或配置的示例包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、网络PC、微型计算机、大型计算机、嵌入式系统、包括任何以上系统或设备的分布式计算环境等。
可以使用诸如程序模块等可由计算机执行的计算机可执行指令。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。也可使用其中任务由通过通信网络或其他数据传输介质链接的远程处理设备执行的分布式计算环境。在分布式计算环境中,程序模块和其他数据可以位于包括存储器存储设备的本地和远程计算机存储介质中。
参考图8,用于实现此处所描述的各方面的示例性系统包括计算设备,诸如计算设备800。在其最基本的配置中,计算设备800通常包括至少一个处理单元802和存储器804。取决于计算设备的确切配置和类型,存储器804可以是易失性的(如随机存取存储器(RAM))、非易失性的(诸如只读存储器(ROM)、闪存等)或两者的某种组合。该最基本配置在图8中由虚线806来例示出。
计算设备800可以具有附加特征/功能。例如,计算设备800还可包含附加存储(可移动和/或不可移动),包括但不限于磁盘、光盘或磁带。这样的附加存储在图8中由可移动存储808和不可移动存储810示出。
计算设备800通常包括各种计算机可读介质。计算机可读介质可以是可由计算设备800访问的任何可用介质,并且包括易失性和非易失性介质、可移动和不可移动介质。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的太阳城集团的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。存储器804、可移动存储808和不可移动存储810都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、电可擦除可编程只读存储器(EEPROM)、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或可用于存储所需太阳城集团且可以由计算设备800访问的任何其它介质。任何这样的计算机存储介质都可以是计算设备800的一部分。
计算设备800可包含允许该设备与其它设备通信的通信连接812。计算设 备800也可包括输入设备814,如键盘、鼠标、笔、语音输入设备、触摸输入设备等等。也可包括输出设备816,如显示器、扬声器、打印机等等。所有这些设备在本领域是众知的并且不必在此详细讨论。
应该理解,此处描述的各种技术可以结合硬件或软件,或在适当时结合两者的组合来实现。因此,当前公开的主题的方法和装置或其特定方面或部分可采取包含在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中当程序代码被加载到诸如计算机等机器内并由其执行时,该机器成为用于实现当前所公开的主题的装置。
尽管示例性实现可涉及在一个或多个独立计算机系统的上下文中利用当前所公开的主题的各方面,但本主题不受此限制,而是可以结合任何计算环境,诸如网络或分布式计算环境来实现。此外,当前所公开的主题的各方面可在多个处理芯片或设备中或跨多个处理芯片或设备实现,且存储可类似地跨多个设备来实现。这些设备可能包括例如个人计算机、网络服务器、以及手持式设备。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。

关 键 词:
文档 查询 索引
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:对文档的查询和索引.pdf
链接地址:http://zh228.com/p-6401600.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');