我需要在许多文件中进行搜索,但不想在查询中写出它们的名称。就我而言,我需要查询每个具有完全不同名称的 500 XML文件。那么,有没有办法。
我可以说:
for $x in doc("ALL XML files under a specific directory")
return $x/Something
我正在使用Ubuntu
和MarkLogic5
答案 0 :(得分:7)
如果您的文档实际上位于“目录”中...(即它们的网址形式为“/a/b/c.xml
”),那么您可以使用xdmp:directory()
http://docs.marklogic.com/xdmp:directory
for $x in xdmp:directory("/a/b/")
return $x/something
答案 1 :(得分:1)
的Mads'如果通过"目录"答案是正确的。你的意思是Marklogic目录。如果您指的是文件系统路径,那么答案是在Marklogic处理文档之前,您需要将它们加载到数据库中。
要执行此操作,请查看ML计算机上的端口8000(localhost?)并选择"加载内容"该页面上的选项。这将允许您选择文件系统目录以从中加载文档。
通过更改"文档设置"在加载之前,您还可以选择将文件系统路径的多少(如果有)作为Markloic中docuemnt URI的一部分进行维护,并为所有加载的文档分配一个集合。我鼓励你做这两件事;一旦他们重新加载,他们将简化所有这些文件的引用(一旦你完成它们,就可以查询或删除。)
加载文档后,您可以使用xdmp:directory()
,fn:collection()
或您喜欢的任何其他方法查询文档。
答案 2 :(得分:0)
如果用户具有正确的权限,您可以从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)
答案 3 :(得分:0)
要搜索特定目录中的文件,请查看cts:directory-query()和文档中的示例。