0

我将以下 XHTML 文件保存在带有 URI(/54ab8c234f3c8ce1f5c30ddc) 的 marklogic 中。

我需要根据字符串搜索 Marklogic DB(如果它是 XHTML 中的标记名称或属​​性名称或文本)。

我只能搜索任一属性的文本。但不能一次全部搜索。

注意:如果我通过“SS_Default”(它是一个属性值)字符串,它将返回 marklogic 的 URI,或者如果我通过“META”(它是一个标签名称)它应该返回相应的 URI,或者如果我通过“Narrowed” by"(它是一个文本)它应该返回相应文件的URI。

            <?xml version="1.0" encoding="UTF-8"?>
    <html xmlns="http://www.w3.org/1999/xhtml">
        <meta>
            </meta>
        <body class="Default">

        </body>
    </html>
4

2 回答 2

1

在摄取时,您可以通过在原始文档周围创建一个包装器来使用信封模式。

<envelope>
  <original>
    <html>...</html>
  </original>
  <plain-text>
    put the plain text content of your html here
  </plain-text>
</envelope>

您的文本搜索只能在纯文本元素上执行,在返回结果文档时,您可以返回内容元素。但正如戴夫所说,你正在失去有价值的信息。在这里您可以找到有关摄取数据的方法的文档https://docs.marklogic.com/guide/ingestion

于 2015-01-07T12:24:29.687 回答
0

您尝试执行的搜索类型通常彼此不同,因为它们是不同类型的数据。例如,如果您想搜索“元”并查找具有该元素的文档,则您正在查询结构。您可以在 MarkLogic 中使用这种查询来做到这一点:

cts:uris((), (), cts:element-query(xs:QName("meta"), ()))

当您要搜索“narrowed by”时,这只是文本,简单明了:

cts:uris((), (), "narrowed by")

如果要在属性中搜索,通常通过指定要搜索的属性来完成:

cts:uris((), (), cts:attribute-value-query(xs:QName("body"), xs:QName("class"), "SS_Default"))

如果你想结合这些,你可以运行一个或查询。我建议查看您计划运行的查询类型,看看它们是否可以通过这种方式进行分段。正如 mholstege 所指出的,您可以将文档加载为文本并能够以字符串的形式搜索所有内容,但是您会在结构中失去很多价值,因此最好退后一步考虑一下您是否真的需要运行这些以同样的方式查询。

于 2015-01-06T19:28:00.803 回答