多くのファイルを検索する必要がありますが、それらの名前をクエリに書きたくありません。私の場合、それぞれまったく異なる名前の500 個の XML ファイルを照会する必要があります。それで、何か方法はありますか。
私は言うことができます:
for $x in doc("ALL XML files under a specific directory")
return $x/Something
私は使用Ubuntu
していますMarkLogic5
ドキュメントが実際に「ディレクトリ」にある場合 (つまり、「/a/b/c.xml
」のような URL の形式である場合)、次を使用できます。xdmp:directory()
http://docs.marklogic.com/xdmp:ディレクトリ
for $x in xdmp:directory("/a/b/")
return $x/something
ユーザーが適切な権限を持っている場合、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)
「ディレクトリ」がMarklogicディレクトリを意味する場合、Madsの答えは正しいです。ファイルシステム パスを意味する場合、答えは、Marklogic がドキュメントを処理する前に、ドキュメントをデータベースにロードする必要があるということです。
これを行うには、ML マシン (localhost?) のポート 8000 を確認し、そのページで [コンテンツの読み込み] オプションを選択します。これにより、ドキュメントをロードするファイルシステム ディレクトリを選択できます。
ロードする前に「ドキュメント設定」を変更することで、Markloic のドキュメント URI の一部として維持するファイルシステム パスの量 (存在する場合) を選択し、読み込まれたすべてのドキュメントにコレクションを割り当てることもできます。これらの両方を行うことをお勧めします。これらのドキュメントが読み込まれると、これらすべてのドキュメントを排他的に参照することが単純化されます (クエリを実行したり、処理が終わったら削除したりできます)。
ドキュメントが読み込まれたら、xdmp:directory()
、fn:collection()
またはその他の任意の方法を使用してクエリを実行できます。
特定のディレクトリ内のファイルを検索するには、cts:directory-query() とドキュメントの例を参照してください。