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

文档序号:8460739阅读:来源:国知局
设本部分中所述的任何方法仅仅由于被包括在本部 分中而被认为是现有技术。
[0020] 全文搜索
[0021] 可以对标记的或结构化的内容以及非结构化的内容执行全文搜索。XQuery和 XPath 全文(XQuery and XPath Full Text,XQFT)搜索扩展了 XQuery 1.0 和 XPath 2.0, 以提供对XML内容的全文搜索能力。示例性的XQFT功能在2011年3月17日的标题为 "XQuery and XPath Full Text 1.0"的W3C建议书中得到描述,其全部内容通过引用并入 于此,就好像在此完整地阐述了一样。W3C建议书定义了 XQuery和XPath全文1. 0的语法 和正式语义。
[0022] XQFT搜索的是记号(token)和短语而非子串。针对"Tom"的所有示例性子串搜 索可能返回 "Tom"、"Tomorrow"、"Tomato"、"Tomcat"、"Tomb" 和 / 或"Tomahawk"。为了方 便XQFT搜索,文档被打碎成单独处理的记号(即,串的单元或者诸如句子中的词之类的经 定界的词)。通过匹配来自搜索查询的记号与文档中的记号来评估XQFT搜索。例如,针对 "Tom"的XQFT搜索将只返回包括匹配"Tom"的记号的那些文档,由此排除了 "Tomorrow"、 "Tomato"、"Tomcat"、"Tomb" 和 / 或"Tomahawk"。
[0023] XQFT搜索还可以搜索具有相似的含义、发音、语言词干或起源的其它词,或者以其 他方式与所搜索的词相关的词。例如,针对"mouse"的搜索可能导致包含"mouse"、"mice"、 "rodent"、"rodents"、"compute;r mouse"、"rat6n"(西班牙语的"mouse")、"souris"(法 语的"mouse")、"Maus"(德语的"mouse")等的文档。
[0024] XQFT搜索还可以允许被搜索的记号之间的居间记号,或者可以允许被搜索的记号 不按顺序出现。例如,针对"San Jose Sharks"的搜索可能导致包含"...Sharks in San Jose.," 或 "??? in San Jose. The Sharks. " 的文档。
[0025] XQFT搜索还可以基于相关性来排列结果。例如,具有几个精确匹配的文档可以出 现在结果列表的顶部,而具有很少接近匹配的文档可以出现在列表的底部。文档或段落中 的词项接近度、文档或段落中的词项频率、文档或段落中的词项突出或放置、词项与所搜索 词项的语境相似度以及其它因素可以有助于搜索结果的排名。
【附图说明】
[0026] 在附图中:
[0027] 图1例示了用于针对XML文档中的标志或记号创建倒排列表(posting list)的 示例性过程。
[0028] 图2例示了用于针对XML文档中的记号创建倒排列表的示例性过程。
[0029] 图3例示了使用针对记号的倒排列表和针对标志的倒排列表来对照XML文档评估 全文查询的示例性过程。
[0030] 图4例示了使用针对记号的倒排列表和针对XML文档的节点树索引来对照XML文 档评估全文查询的示例性过程。
[0031]图5例示了用于使用倒排列表来评估全文查询的示例性系统。
[0032] 图6例示了可以被具体地配置为实现本文所述各种技术的示例性计算机系统。
【具体实施方式】
[0033] 在以下描述中,出于说明的目的,阐述了众多具体细节以提供对本发明的透彻理 解。但是,显然,本发明在没有这些具体细节的情况下也可以实践。在其它实例中,众所周 知的结构和设备以框图形式示出,以免不必要地模糊本发明。
[0034] 总体概述
[0035] 提供了存储针对XML文档中的记号的倒排列表并且使用倒排列表来处理查询的 过程、机器和所存储的指令。文档处理器解析XML文档并且,对于记号在XML文档中的每次 出现,向针对该记号的列表添加条目。该记号的条目把该记号映射到可找到该记号的文档、 文档内的位置、范围或节点。文档处理器还可以在XML文档中检测标志并且,对于标志的每 次出现,向针对该标志的列表添加条目。该标志的条目还可以指定由该标志覆盖的文档、文 档内的位置、范围或节点。
[0036] 然后,查询处理器可以接收对照XML文档进行评估的全文查询。全文查询指定记 号和语境。查询处理器可以确定包含记号的一个或更多个文档、文档内的位置、范围或节点 的第一集合,方式是通过使用针对所指定的记号指定这种信息的记号列表。查询处理器还 可以确定包含语境的一个或更多个文档、文档内的位置、范围或节点的第二集合,方式是通 过使用针对所指定的记号指定这种信息的记号列表。然后,至少部分地基于文档或节点的 第一集合和文档或节点的第二集合,查询处理器可以确定包含记号和语境两者的文档或文 档内的节点的第三集合。然后,可以至少部分地基于文档或节点的第三集合来评估查询。
[0037] 在一个实施例中,XML文档被解析,并且,对于记号在XML文档中的每次出现,文档 处理器向针对该记号的列表添加条目。该条目把该记号映射到XML文档中包含该记号的父 节点的位置。然后,查询处理器可以接收用于对照XML文档进行评估的全文查询。然后,查 询处理器使用记号列表来确定包含由查询指定的记号的父节点的位置。然后,查询处理器 可以从父节点遍历节点树索引,以确定该父节点是否满足由查询指定的语境。在相同或不 同的实施例中,查询处理器可以首先确定与在查询中指定的语境匹配的节点或者节点的位 置范围,然后使用记号列表来确定记号是否在所确定的节点下面或者是否在节点的位置范 围内。
[0038] 图5例示了用于使用倒排列表来评估全文查询的示例性系统。如所示出的,在查 询处理器502处,全文查询由数据库服务器508接收。查询处理器502生成指示查询执行 引擎506如何执行查询的执行计划504。例如,执行计划可以指示查询执行引擎506在其它 操作之前执行某些操作,或者使用某些索引来执行查询的某些部分。查询处理器502和/ 或查询执行引擎506可以访问存储设备516,其中存储设备516可以包括数据库服务器508 中被分配的内存部分、底层数据库中的盘存储器或者某些其它非暂时性存储器。查询处理 器502可以指示查询执行引擎506使用记号倒排列表510、标志倒排列表512和XML树索引 514来计算全文查询500的结果。
[0039] 逐行扫描文档的第一方法
[0040] XQuery全文(XQuery FullText)在W3C XQuery工作组的全文搜索支持的情况下 已经变成推荐的查询XML的标准方法。在RDBMS中定义SQL中的用于处理XML类型的标准 运算符的SQL/XML标准已经被定义为使用具有XQuery全文的XMLQuery ()、XMLExists ()、 XMLTABLE构造来在语义上搜索存储在关系表的XMLType列中的XML文档内的文本。
[0041] 本文所述的各种技术允许用户使用SQL/XML中的标准XMLQuery ()、XMLExists () 和XMLTABLE构造来对XML进行xquery全文搜索。
[0042] 因此,提供了捕捉索引技术以及SQL/XML查询编译时间和运行时间最优化这两者 的一组技术,以最优化在XMLType存储器中对XML文档进行搜索的SQL/XML查询中所使用 的XQuery全文操作。这些最优化技术能够由终端用户经过解释计划和事件追踪来诊断。
[0043] 在一个示例中,创建具有存储purchaseOrder XML文档的XMLType列X的表P0 :
[0044] Create table po(x xmltype);
[0045] 用户可以在XMLExists ()和XMLQuery ()中发布具有XQuery全文搜索的以下SQL SELECT 语句,以搜索 purchaseOrder XML 文档。
[0046] Q1:
[0047] SELECT XMLQUERY ('for$li in$doc/purchaeOrder/lineItems where$li/ description contains text〃iPhone 5〃return$li'PASSING P0. X as〃doc〃RETURNING CONTENT)
[0048] FROM P0
[0049] WHERE XMLEXISTS(' $doc/purchaseOrder/lineItems[description contains text"iPhone 5"]'PASSING PO.X as"doc")
[0050] 根据第一方法,可以针对来自PO表的XML内容的每一行逐行地单独处理该SELECT 语句。通过把查询编译为对每个文档使用文档对象模型(D0M)的执行计划,查询处理器将 执行查询的功能评估。对于每一行,查询处理器将在XMLEXISTS ()中运行XQuery全文搜索, 以查看该行的文档是否满足XQuery表述。如果行不满足XQuery表述,则查询处理器将通 过对XML文档在选定列表的XMLQueryO运算符中运行XQuery来返回该行。换句话说,在 本示例中,逐行地评估查询或其至少一部分。
[0051] 对给定行运行XQuery全文搜索可以涉及遍历D0M树来首先找出purchaseOrder 节点。查询处理器可以进一步在文档中所找到的每个purchaseOrder节点下面搜索 lineltem节点,以及这些lineltem节点中的每一个下面的描述节点。对于所找到的每个描 述节点,后代文本节点被组合成文本对象,并且文本对象被打碎成诸如单独的词之类的记 号。这些记号被分析,以确定例如相邻的记号是否包含"iPhone"和"5"。如果是,则该文档 可以被添加到结果列表。随着查询被处理,可以类似地针对其它行分析其它文档。
[0052] 根据该第一方法的XQFT的功能评估可具有以下限制:
[0053] 每一行可以从盘单独取得,并且XQFT功能评估单独地应用于每一行。如果有许多 XML文档存储在基表中,则该第一方法可能不能成规模。
[0054] 依赖于XMLTy
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1