对文档的查询和索引的制作方法

文档序号:9308596阅读:388来源:国知局
对文档的查询和索引的制作方法
【专利说明】对文档的查询和索引
[0001] 背景
[0002] JavaScript对象记法(JS0N)是数据交换格式,该数据交换格式正在变成对商品 和研究产品的选择的格式。在JS0N文档集合以及诸如XML和HTML等其它文档格式上执行 的最典型的操作之一是结构查询的处理,除了特定字段值之外,它基于结构模式对数据进 行匹配。结构查询的可表达性使得难以应用针对关系数据和查询设计的索引过程。缺少与 JS0N文档相关联的模式进一步妨碍了用于(例如,使用辅助索引)加速查询处理的传统技 术的适用性。
[0003] 概述
[0004] 根据JS0N文档集合生成文档索引并将其用来标识可匹配任何给定查询的文档。 为每一文档生成具有与文档的每一对象相对应的节点的树。所生成的树的各节点被归并或 组合以生成文档索引,文档索引它本身是树。另外,为该索引的每一节点生成倒排索引,该 倒排索引标识该节点源自的一个或多个文档树。在接收到查询时,该查询首先对照文档索 引树来执行:在执行期间,正确的集合操作被应用于与该查询所匹配的节点相关联的倒排 索引。所得的集合标识可与该查询相匹配的文档。该查询随后在所标识的文档上重新执行。 在索引上运行查询将不错失任何匹配的文档,但可能返回不与该查询相匹配的一些文档。
[0005]在一实现中,计算设备接收多个文档。每一文档包括多个对象。对于每一文档,生 成表示该文档的图。每一个图包括与所表示的文档的每一对象相对应的节点。通过归并所 生成的图的各节点来生成文档索引。文档索引中的每一节点包括包含该节点的一个或多个 图的标识符。由计算设备接收查询。使用所生成的文档索引来标识该多个文档中的作为该 查询的响应的一个或多个文档。该查询在所标识的一个或多个文档上重新执行以确定该一 个或多个文档的与该查询相匹配的子集。响应于该查询来提供查询执行以找出这一子集的 结果,作为整个文档或文档片段。
[0006]在一实现中,计算设备接收文档索引。文档索引包括多个节点,且每一节点包括多 个图中的一个或多个图的标识符,并且每一个图表示多个文档中的文档。由计算设备接收 查询。该查询包括多个子查询。对于每一子查询:确定文档索引中的与子查询相匹配的节 点;且对于与子查询相匹配的每一所确定的节点,确定由所确定的节点的标识符所标识的 一个或多个图。为每一子查询确定所确定的一个或多个图的并集。标识由所确定的图的并 集所表示的文档。该查询在所标识的一个或多个文档上重新执行,以确定该一个或多个文 档的与该查询相匹配的子集。响应于该查询来提供查询执行以找出这一子集的结果,作为 整个文档或文档片段。
[0007]提供本概述以便以简化的形式介绍将在以下【具体实施方式】中进一步描述的一些 概念。本
【发明内容】
并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用 于限定所要求保护的主题的范围。
【附图说明】
[0008]当结合附图进行阅读时,可以更好地理解以上概述以及以下对说明性实施例的详 细说明。出于说明各实施例的目的,在附图中示出各实施例的示例性构造;然而,各实施例 不局限于所公开的具体方法和手段。在附图中:
[0009] 图1是用于履行查询的示例环境的图示;
[0010] 图2是示例文档引擎的图示;
[0011] 图3是示例树的图示;
[0012] 图4是另一不例树的图不;
[0013] 图5是不例文档索引的图不;
[0014]图6是使用文档索引来履行查询的方法的实现的操作流程;
[0015] 图7是使用文档索引来履行查询的方法的另一实现的操作流程;以及
[0016] 图8示出了在其中可实现各示例实施例和各方面的示例性计算环境。
[0017] 详细描述
[0018] 图1是用于履行查询的示例环境100的图示。环境100可以包括客户端设备110、 以及通过网络120与客户端设备110通信的文档引擎150。网络120可以是包括公共交换 电话网(PSTN)、蜂窝电话网和分组交换网(例如,因特网)的各种网络类型。
[0019] 在一些实现中,客户端设备110可以包括台式个人计算机、工作站、膝上计算机、 智能电话、蜂窝电话或任意启用WAP的设备或能够直接或间接与网络120对接的任意其它 计算设备。例如,可使用诸如图8中所示的计算设备800的通用计算设备来实现客户端设 备110。尽管仅示出一个客户端设备110,但这仅用于说明目的,对于可被支持的客户端设 备的数量不存在限制。
[0020] 文档引擎150可以从客户端设备110接收一个或多个查询115。文档引擎150可以 基于文档160生成作为查询115的响应的结果集125。结果125可包括作为查询115的响 应的文档160的链接、文档片段、或其他指示符。文档160可包括各种文档类型,包括HTML 文档、XML文档、以及JavaScript对象记法(JS0N)文档。可以支持其他类型的文档。文档 160可以不与模式相关联。
[0021] 在一些实现中,文档160中的每一个可具有标记和一个或多个对象。每一对象本 身可具有标记和一个或多个对象或值。另外,每一文档和对象可包括一个或多个阵列。每 一阵列可具有标记且可以是值的阵列或对象的阵列。可以使用或支持其他文档语法和/或 类型。
[0022] 出于简化的目的,本文描述的文档160被描述成值是串类型的。然而,本文描述的 实现可以支持其他类型。
[0023] 例如,用于使用以下语法来存储与两个公司相关的数据的两个文档160(文档A和 文档B)是:

[0051] 如参考图2进一步描述的,文档引擎150可以根据文档160生成文档索引170,并 且可以使用文档索引170来生成响应于查询115的结果125。在一些实现中,文档引擎150 可以根据文档160生成图或树或其他数据结构,且可以提供归并所生成的图来生成文档索 引170。文档索引170可由文档引擎150使用来标识作为查询115的响应的文档160,从而 向用户提供经改进的搜索体验。
[0052] 图2是示例文档引擎150的图示。文档引擎150可包括但不限于树引擎210、索引 引擎220以及查询引擎230。可以支持更多或更少的组件。文档引擎150的各组件中的一 些或全部可以使用诸如例如计算设备800的一个或多个通用计算设备来实现。
[0053] 树引擎210可以根据文档160生成一个或多个树215。可为文档160中的每一文 档生成树。在一些实现中,树125中的每一个可包括多个节点。树的每一内部节点可以表 示文档中的对象且可具有与该对象的标记相对应的标记。树的每一叶节点可以表示值且可 具有与该值相对应的标记。表示叶节点的串值的标记总是与正常对象标记区分开,甚至在 它们具有相同的拼写时。文档160中的阵列可被重写为具有数值标记的对象,且可以在树 中表示为内部节点类对象。树215中的每一个可具有根节点,根节点具有空串值。注意,其 他数据结构可被用于树215 ;例如在一些实现中,每一树可被实现为有向图。
[0054] 例如,图3示出了根据文档A生成的示例树310,且图4示出了根据文档B生成的 示例树410。如可从图3和4中看到的,树310和410中的每一个分别包括表示来自文档A 和B的每一对象和值的节点。如上所述,与位置和出口标记相对应的阵列已被重写在每一 树中作为具有数值标记的对象。
[0055] 在一些实现中,树引擎210可以根据文档160递归地生成树215。例如,树引擎210 可以使用以下函数buildTree来构造树215,其中"rootLabel(根标记)"是附连到所生成 的树的根的标记,且"Document(文档)"是要根据其生成树的文档。可以使用用于根据文 档160生成树215的其他方法。
[0056]
[0057]
[0058] 查询引擎230可以匹配包括一个或多个子查询的查询115。每一子查询本身是个 查询且可包括一个或多个运算符,该一个或多个运算符被称为"节点匹配器"。在一实现中, 查询引擎230可以接受具有以下句法的匹配查询115 :
[0059]
[0060] 节点匹配器(或nm)是在节点的标记匹配节点匹配器所指定的一个或多个值时返 回真的任意布尔函数。节点匹配器可被进一步分类成匹配内部节点的标记的标记匹配器和 只匹配基值的值匹配器。这些中的任一者可以调用任意布尔函数。
[0061 ] 可以通过使用来自所述句法的运算符组合子查询,来使用以上句法生成查询115。 每一子查询可以是节点匹配器。查询引擎230可通过解决接收到的查询的每一子查询并基 于特定运算符(例如,&a
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1