在marklogic

时间:2016-06-02 12:28:51

标签: marklogic marklogic-8

如果我必须在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中执行此操作。

1 个答案:

答案 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);

然后写入的文档将写入该森林,搜索将仅匹配该森林。