如何在Marklogic中搜索并返回文档名称?

时间:2012-07-16 08:51:28

标签: xquery marklogic

如何搜索文档内容并在Marklogic中返回相应的文档名称?假设我的文档名称是test.doc,它包含文本例如“hello world”。现在我将这个文档上传到Marklogic Server,内容处理器将生成相应的XML文件。现在我这样搜索: -

import module namespace search="http://marklogic.com/appservices/search" at "/Marklogic/appservices/search/search.xqy";
declare variable $options:=
<options xmlns="http://marklogic.com/appservices/search">
<transform-results apply="raw"/>
</options>;

for $d in search:search("hello world", $options)/search:result
return tokenize(data($d/@uri), "/")[last()]

它返回包含文本“ hello world ”的相应XML和XHTML文件名,但我只想返回原始文档名称(test.doc)而不是相应的XML文件名。

2 个答案:

答案 0 :(得分:0)

此信息不会自动保留,因此您需要以某种方式在内容管道中明确支持它。

您可以修改管道以将原始文档名称存储在目标XML文档的document属性中,您可以将文档名称作为元数据存储在文档中,也可以将原始文档名称存储为URI的一部分。

答案 1 :(得分:0)

可能会过时,但很有用。

http://docs.marklogic.com/xdmp:node-uri

xdmp:node-uri

xdmp:node-uri(
   $node as node()
) as xs:string?
Summary

返回参数或其祖先的document-uri属性。