0

我需要在许多文件中进行搜索,但不想在查询中写出它们的名称。在我的例子中,我需要查询500个名称完全不同的XML 文件。那么,有没有什么办法。

我可以说:

for $x in doc("ALL XML files under a specific directory")
return $x/Something

我正在使用UbuntuMarkLogic5

4

4 回答 4

7

如果您的文档实际上位于“目录”中......(即它们是一种 URL 形式,例如“ /a/b/c.xml”),那么您可以使用xdmp:directory()

http://docs.marklogic.com/xdmp:目录

for $x in xdmp:directory("/a/b/") 
return $x/something
于 2013-04-26T03:26:29.247 回答
2

如果用户具有正确的权限,您可以从 Marklogic 查看文件系统。您可以通过这种方式将数据加载到 marklogic 中,但您不应该以这种方式查询数据。

这是一个示例,可能会帮助您找到所需的内容。

 declare namespace dir = "http://marklogic.com/xdmp/directory";

  for $file in xdmp:filesystem-directory("/home/user/desktop/xml/")/dir:entry

  return xdmp:filesystem-file($file/dir:filename) 
于 2013-04-29T17:22:52.620 回答
1

如果“目录”是指 Marklogic 目录,Mads 的回答是正确的。如果您的意思是文件系统路径,那么答案是在 Marklogic 可以处理文档之前,您需要将它们加载到数据库中。

为此,请查看 ML 机器(本地主机?)上的端口 8000,然后选择该页面上的“加载内容”选项。这将允许您选择一个文件系统目录来加载文档。

通过在加载之前更改“文档设置”,您还可以选择该文件系统路径的多少(如果有)应该作为 Markloic 中文档 URI 的一部分进行维护,并为所有加载的文档分配一个集合。我鼓励你做这两件事;它们将在加载后简化对所有这些文档的专门引用(完成后用于查询或删除。)

xdmp:directory()加载文档后,您可以使用fn:collection()或任何其他您喜欢的方法来查询它们。

于 2013-04-29T10:49:18.427 回答
0

要在特定目录中搜​​索文件,请查看 cts:directory-query() 和文档中的示例。

http://docs.marklogic.com/cts:directory-query

于 2013-04-30T11:03:22.130 回答