如果我必须在MarkLogic中插入文档,如何使用Java API指定文档应存储在哪个林中?
以下是我将数据写入MarkLogic数据库的示例:
// create the client
DatabaseClient client = DatabaseClientFactory.newClient(
props.host, props.port, props.writerUser, props.writerPassword,
props.authType);
// make use of the client connection
TextDocumentManager docMgr = client.newTextDocumentManager();
String docId = "/example/text.txt";
StringHandle handle = new StringHandle();
handle.set("A simple text document");
docMgr.write(docId, handle);
如果我可以通过指定林存储文档,那么我还需要获取指定林的文档。
我认为这是可能的,因为我已经看到在XQuery中的特定forestId中存储和搜索。像这样:
插入特定的林:
xdmp:document-insert(
$uri as xs:string,$root as node(),
[$permissions as element(sec:permission)*], [$collections as xs:string*],
[$quality as xs:int?], [$forest-ids as xs:unsignedLong*])
as empty-sequence()
搜索特定的森林 -
cts:search(
$expression as node()*, $query as cts:query?,
[$options as (cts:order|xs:string)*], [$quality-weight as xs:double?],
[$forest-ids as xs:unsignedLong*]) as node()*
请告诉我如何在Java API中执行此操作。
答案 0 :(得分:1)
今天,这不能通过Java Client API获得。它将在MarkLogic 9中提供。如果您想在MarkLogic 9的早期访问版本中试用它,您可以加入early access program。我们很乐意在您尝试使用此功能后听取您的反馈意见。
在MarkLogic 9中,您可以通过将forestName指定为DatabaseClientFactory来执行此操作:
DatabaseClient client = DatabaseClientFactory.newClient(
props.host, props.port, props.writerUser, props.writerPassword,
props.authType, props.forestName);
然后写入的文档将写入该森林,搜索将仅匹配该森林。