评估xml全文搜索的制作方法_4

文档序号:8460739阅读:来源:国知局
标识符之间的映射, 作为XML全文索引的一部分。SQL/XML XQFT处理层咨询由XML全文索引维持的映射表并且 进行QName重映射,使得传递到索引层的QName是经映射的内部名称。
[0079] 在一个示例中,在一组文档中对具有指定语境的指定记号的全文搜索可以发现文 档10和13具有指定语境并且文档4、5、7和10具有指定记号。在本示例中,文档10是既 包含所述记号又包含所述语境的唯一文档。可以进一步分析文档10,以确定在文档10中所 述记号是否在所述语境内。
[0080] 对于既包含指定语境又包含指定记号的每个重叠文档,查询处理器可以分析所述 记号在文档内的词位置和文档中由所述语境覆盖的范围。如果所述记号的位置在由所述语 境覆盖的范围内,则查询处理器可以确定所述记号在所述语境下。
[0081] 对于短语中的多个记号,查询处理器可以分析这多个记号在文档中的位置,以确 定记号是否是按指定的次序、在彼此的指定距离内、和/或在相同的段落中。例如,查询处 理器可以过滤掉不在彼此的阈值距离内的记号对。阈值距离可以基于记号的尺寸。在第一 个示例中,在对"Sacramento Kings"的搜索中,查询处理器可以搜索在Sacramento的起始 的12个字符以内开始的"Kings",其中Sacramento是10个字符长。在第二个示例中,在对 "Palo Alto"的搜索中,查询处理器可以搜索在Palo的起始的6个字符以内开始的"Alto", 其中Palo是4个字符长。在这些示例中,缓冲距离2用来允许记号之间的间距。在其它示 例中,可以使用更大或更小的缓冲距离,并且缓冲距离可以是用户可配置的。
[0082] 图3例示了使用针对记号的倒排列表和针对标志的倒排列表来对照XML文档评估 全文查询的示例性过程。在步骤300中,查询处理器接收指定记号和语境的全文查询。然 后,在步骤302中,查询处理器至少部分地通过执行步骤302A和302B来确定包含所指定的 记号和语境的候选文档,其中步骤302A和302B可以整体或部分地串行或并行执行。在步骤 302A中,查询处理器使用针对记号的倒排列表来确定包含记号的文档。在步骤302B中,查 询处理器使用针对标志的倒排列表确定包含标志的文档。一旦已确定匹配文档中的至少一 些,查询处理器就可以与步骤302的剩余部分串行或并行地使用记号倒排列表来确定记号 在候选文档中的位置,以及使用标志倒排列表来确定标志在候选文档中的范围。在步骤306 中,基于这些位置和范围,查询处理器可以过滤掉不在所述标志的范围内的记号的出现。
[0083] 示例性的文档级索引
[0084] 在一个实施例中,针对文档集的倒排列表不提供整体查询的结果。例如,查询可以 要求以不能利用列表的渐进过滤效果的方式逐行进行评估。但是,即使查询评估局限于一 次单个文档的评估,也可以利用倒排列表。
[0085] 在一个实施例中,除了针对整个文档集的倒排列表之外,可选地,还由数据库服务 器逐文档地创建并保存倒排列表。在一个示例中,逐文档地创建记号列表。这些文档级的 倒排列表可能只包含例如使用直接包含记号的树节点(即,直接父节点,而不是包含直接 父节点的祖先树节点)的地址识别的记号位置。换句话说,在其中根节点处于最高级并且 叶节点处于最低级的树层次中,直接父节点是包含记号或记号的出现的最低级节点。替代 地或者附加地,文档级的倒排列表可能包含关于记号在直接父节点内位于何处、记号在整 个文档内位于何处、和/或包含记号和直接父节点的其它祖先节点的身份之类的信息。
[0086] 在一个实施例中,文档解析器解析XML文档并且,对于记号在文档中的每次出现, 向针对该记号的列表添加条目。该条目可以把该记号映射到XML文档中包含该记号的父节 点的位置。该父节点可以是该记号的出现的直接父节点。换句话说,该父节点可以是XML 文档中包含该记号的出现的最低级节点。列表中的条目可以至少部分地通过识别针对父节 点的节点树索引中的条目把记号映射到父节点的位置。针对节点树索引的条目存储父节点 在XML文档中的位置。
[0087] 为了公布基于单个文档的文档级的倒排列表,对于列表中的每个项,文档标识符 将都相同。因此,文档标识符可以针对每个文档级的列表而非针对由该列表表示的记号或 标志的每次出现存储一次。XML标志列表可能不能在文档级维持,因为文档具有通过树节点 地址识别每个XML节点的XML树索引。树节点地址可以存储在文档级的倒排列表中,以验 证节点包含关系(即,节点是否在指定的语境下)。
[0088] 为了验证节点包含关系,XML树索引可以从被发现包含所指定的语境的节点朝着 包含所指定的记号的节点向下遍历;或者,XML树索引可以从被发现包含所指定的记号的 节点朝着包含所指定的语境的节点向上遍历。如果包含记号的节点直接地或者通过一系列 节点到节点的链接间接地链接到包含语境的节点,则包含记号的节点可以被确定为满足对 语境的查询。
[0089] 在另一个实施例中,并非使用文档级的列表,可以利用并过滤针对文档集的倒排 列表来只找出与被评估的特定文档有关的信息。
[0090] 在一个实施例中,在文档级维持的记号列表包含识别包含文本的节点/标志的位 置和/或文本在文档或节点/标志内的位置的信息。例如,记号列表可能指定文本"xyz" 位于特定地址的节点中的20个字符处。当在特定的语境下评估对"xyz"的查询时,即使没 有在文档级的标志列表,记号列表也可以用来识别包含"xyz"的节点的直接父亲的节点地 址。于是,作为索引被维持的XML树索引或D0M模型可以用来从该节点向上导航到祖先节 点,以确定"xyz"是否在给定的语境内。通过向上导航经过XML文档的层次,查询处理器可 以确定"xyz"是否包含在给定的语境内。
[0091] 在一个实施例中,数据库服务器针对所存储的XML文档创建并维持XML树索引。针 对文档的XML Tree索引可以在逐文档地评估文档的时候或者如果文档的文本需要从倒排 列表单独加载或分析的时候被使用,以便完成查询的评估。即使没有针对给定文档的标志 列表,通过使用XML树索引从包含所搜索的文本的给定节点向上导航经过文档内的节点的 层次,也可以针对该文档评估查询的语境部分。
[0092] 例如,对语境"A/B/C"下的文本进行搜索的查询,该查询可以使用倒排列表来确定 文档中包含该文本的节点的位置或身份。节点的该位置或身份可以用来找到XML树索引或 DOM模型中的条目。XML Tree索引或DOM模型可以用来从所找到的节点朝着根节点向上导 航到父节点。在导航中的某个点,查询处理器能够通过使用在文档级维持的记号列表来确 定在文档中所搜索的文本是否在语境内。确定所搜索的文本是否在语境内的一种方式是使 用自底向上的策略。例如,如果查询处理器在C节点中找到文本,向上导航到B节点,并且 向上导航到D节点然后到根节点,则查询处理器可以确定该文本不包含在语境"A/B/C"内。 但是,如果查询处理器在C节点中找到文本,向上导航到B节点,并且向上导航到A节点,则 查询处理器可以确定该文本包含在语境"A/B/C"内。
[0093] 在另一个示例中,查询处理器可以通过首先经由XPath "/A/B/C"评估找到C节点 的节点地址来进行自顶向下的评估。然后,查询处理器可以使用在文档级维持的记号列表 来找到包含文本的节点地址P。然后,查询处理器可以确定从节点地址P向上走是否可以到 达节点地址C。
[0094] 在一个不例中,XQuery "/a/b/d[c contains text"txl"and e contains text"tx2"] ",具有片段 "〈a>〈b>〈d>〈c>txtl〈/c>〈/d>〈d>〈e>txt2〈/e>〈/d>〈/b>〈/a>" 的文 档不满足该查询,但具有片段"〈aXb>〈dXc>txtl〈/cXe>txt2〈/eX/dX/bX/a>"的文档 满足该查询。在本示例中,XML树索引可以从每个文档中的节点<e>遍历,以发现所找到的 文本是否在指定的语境"/a/b/d/c"内。
[0095] 在另一个实施例中,查询处理器接收用于对照XML文档进行评估的全文查询。该 全文查询指定记号和语境。查询处理器通过使用指定包含记号的父节点的位置的记号列表 来确定包含记号的父节点的位置。然后,查询处理器可以从该父节点遍历节点树索引,以确 定该父节点是否满足语境。节点树索引可以存储多个条目,对于每个父节点,这多个条目包 括指定该父节点在XML文档内的位置的条目以及到作为该父节点的父亲的节点的条目的 链接。
[0096] 在一个实施例中,查询处理器接收用于对照XML文档进行评估的全文查询。全文 查询指定记号和语境。查询处理器可以在基于路径的评估中首先确定与语境匹配的节点的 范围。基于路径的评估可以使用基于路径的索引或者可以分析文档的模型来确定哪些节 点能满足在查询中指定的语境。然后,查询处理器可以通过使用指定包含记号的父节点的 位置的记号列表来确定所述范围是否包含记号。如果父节点的位置在所述范围的范围内, 则该父节点可以被确定为在所述范围内。所述范围中的某些可以包括与该父节点不同的节 点。例如,特定的范围可以包括该父节点以及在语境内嵌套该父节点的其它节点。在特定 的示例中,对路径"A/B"内的节点的搜索可以由嵌套在C节点下的D节点匹配,而C节点反 过来嵌套在B节点下。在本示例中,到父节点D的路径将是"A/B/C/D",并且该节点可以被 确定为匹配语境并且包含查询中所指定的记号。
[0097] 查询处理器可以至少部分地基于父节点是否满足语境来生成查询的结果。例如, 来自或关于直接包含记号并满足语境的节点的信息可以包括在查询结果中。
[0098] 图2例示了用于针对XML文档中的记号创建倒排列表的示例性过程。在步骤200 中,XML解析器解析XML文档。XML解析器在步骤202中检测记号在XML文档中的出现并 且,作为响应,在步骤204中在针对该记号的倒排列表中创建条目。该条目可以识别包含该 记号的父节点。然后,XML解析器继续扫描文档,以确定文档中是否存在任何更多的记号。 如果存在更多的记号,则过程在步骤202继续。否则,过程在步骤208继续,在步骤208处 XML解析器存储与X
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1