Oracle 文本参考 10g指出,当我们使用多列数据存储为表编制索引时,系统会连接文本列,标记列文本,并将文本作为每一行的虚拟 XML 文档进行索引。
此外,在某些情况下,我们可以使用用户数据存储来定义在索引期间合成文档的存储过程。该过程可以抓取数据并将它们放入 XML 格式。这里显示了一个很好的例子。
问题
有没有办法检索或显示每条记录的底层虚拟 XML 文档?如何?
Oracle 文本参考 10g指出,当我们使用多列数据存储为表编制索引时,系统会连接文本列,标记列文本,并将文本作为每一行的虚拟 XML 文档进行索引。
此外,在某些情况下,我们可以使用用户数据存储来定义在索引期间合成文档的存储过程。该过程可以抓取数据并将它们放入 XML 格式。这里显示了一个很好的例子。
有没有办法检索或显示每条记录的底层虚拟 XML 文档?如何?
可能不是
可能显示本机存储的编译索引的视图是CTX_INDEX_VALUES或 CTX_USER_INDEX_VALUES(取决于权限和查询用户)。但是,鉴于索引值长度只有 500 个字符,因此它不太可能存储在那里。(只需开始从这些索引中随机选择,如果它存在,它很可能会在那里。)
然而,查看视图设计,不太可能存储这些虚拟 XML 元素,因为动态编译它们然后将它们加载到内存中要容易得多。
或者,CTX_DOC 有许多标记函数,但没有一个表示能够访问本机 XML。
您可能还想探索围绕 metalink 的讨论:122255.1(不幸的是,我目前没有 metalink 访问权限)。
编写自己的 XML 解析器(因为 Oracle 有很多优秀的原生 XML 函数)可能比尝试绕过全文索引更容易。