标签: marklogic-8

高效的XQuery查询,用于确定元素不存在的文档

假设我在这样的集合中有大约5000万条记录:

<record>
  <some_data>
    <some_data_id>112423425345235</some_data_id>
  </some_data>
</record>
Run Code Online (Sandbox Code Playgroud)

所以我可能有一百万条记录(坏数据),如下所示:

<record>
  <some_data>
  </some_data>
</record>
Run Code Online (Sandbox Code Playgroud)

some_data元素为空.所以如果我element-range-indexsome_data_id上有一个设置,那么什么是一个有效的XQuery查询,它会给我所有空的删除?

我认为我正在寻找的是一个不是FLWOR的查询,你检查每个元素的子记录的存在,因为我认为这是低效的(即拉回数据然后过滤)?

然而,如果我在cts:search查询中执行它,那么它会更有效,就像在将数据拉回之前过滤数据一样?

请编写一个可以有效执行此操作的查询,并确认我对FLWOR语句的假设是否正确.

xquery marklogic marklogic-8

2
推荐指数
1
解决办法
321
查看次数

Marklogic Content Pump和XSLT转换

我正在使用MarkLogic Content Pump来​​提取XML文档。我想使用“ -transform模块和-transform名称空间”选项在mlcp提取过程中转换这些xml文档。我已经为转换创建了XSLT,并将其加载到ML“模块”数据库中,但是mlcp不接受xslt文件并抛出错误:

命令:

    mlcp.sh import \
-username $username -password $passwd \
-host $host -port $port \
-input_file_path $inpath \
-input_compressed true \
-input_file_type aggregates \
-aggregate_record_element $splittag \
-aggregate_uri_id $uriid \
-aggregate_record_namespace "http://www.fda.gov/cdrh/gudid" \
-output_collections $collection \
-output_permissions my-app-role,read,my-app-role,update \
-output_uri_suffix .xml \
-transform_module /marklogic.rest.transform/xml-transform-xsl/assets/transform.xsl \
-transform_namespace "http://marklogic.com/rest-api/transform/xml-transform-xsl" \
-transform_function transform
Run Code Online (Sandbox Code Playgroud)

下面的错误抛出ERROR:

15/09/27 15:34:19 WARN mapreduce.ContentWriter: XDMP-MODNOTTEXT: Module /marklogic.rest.transform/fda-transform-xsl/assets/transform.xsl is not a text document
Run Code Online (Sandbox Code Playgroud)

我想知道mlcp是否接受xslt转换?如果没有,那有什么选择呢?

MarkLogic在模块数据库中创建等效的xqy文件。通过在“ .xqy”文件下面调用,将引发参数不匹配错误:我认为这是由于错误的返回类型造成的:

xquery version "1.0-ml";
module namespace simple-xsl = "http://marklogic.com/rest-api/transform/simple-xsl";
import module namespace …
Run Code Online (Sandbox Code Playgroud)

marklogic marklogic-8 mlcp

1
推荐指数
1
解决办法
295
查看次数

添加通过角色在MarkLogic中删除文档的权限

我有一个名为"监控"的角色,能够在MarkLogic中插入/查看文档.我想添加删除文档的权限,但我不知道是否需要赋予它"执行"权限.

我的角色如下:

<role>
  <role-name>moderators-role</role-name>
  <description>The role assigned to the zabbix user that monitor all server apps</description>
  <permissions>
    <permission>
      <capability>read</capability>
      <role-name>moderators-role</role-name>
    </permission>
    <permission>
      <capability>update</capability>
      <role-name>moderators-role</role-name>
    </permission>
  </permissions>
  <privileges>
    <privilege>
      <privilege-name>rest-writer</privilege-name>
    </privilege>
    <privilege>
      <privilege-name>rest-reader</privilege-name>
    </privilege>
  </privileges>
</role>
Run Code Online (Sandbox Code Playgroud)

marklogic marklogic-8

1
推荐指数
1
解决办法
58
查看次数

Marklogic - 如何在 Xquery 中分配动态变量

我尝试过下面提到的 XQuery 。

declare variable $path  as xs:string :="D:\Mongo\";

    let $uri :="/MJ/1932/Vol1/Part1/387.xml"
    let $x := fn:normalize-space(fn:replace($uri,"/"," "))
    for $i in fn:tokenize($x, " ")
    let $j := fn:concat($path,$i)
    return($j)
Run Code Online (Sandbox Code Playgroud)

实际产量

    D:\Mongo\MJ
    D:\Mongo\1932
    D:\Mongo\Vol1
    D:\Mongo\Part1
    D:\Mongo\387.xml
Run Code Online (Sandbox Code Playgroud)

预期产出

D:\Mongo\MJ
D:\Mongo\MJ\1932
D:\Mongo\MJ\1932\Vol1
D:\Mongo\MJ\1932\Vol1\Part1
D:\Mongo\MJ\1932\Vol1\Part1\387.xml
Run Code Online (Sandbox Code Playgroud)

请建议我如何更改动态变量值。

xquery marklogic marklogic-8

1
推荐指数
1
解决办法
4004
查看次数

如何使用 cts:triple-range-query() 返回一组 MarkLogic URI?

我有一个内容存储库,其中最新版本的文档使用 IsLatestVersion 三元组。

这是带有 isLatestVersion 三元组的文档示例。

 Document URI: /Transaction/00000000000101000000/1.xml

 <aptp:Transaction xmlns:aptp="http://sample.com/aptp">
   <aptp:TransactionDate>2016-07-28</aptp:TransactionDate>
   <aptp:TransactionType>Principal</aptp:TransactionType>
   <aptp:Operation>Buy</aptp:Operation>
   <sem:triple name="isLatestVersion"
               xmlns:aptp="http://sample.com/aptp"
               xmlns:sem="http://marklogic.com/semantics">
     <sem:subject datatype="http://www.w3.org/2001/XMLSchema#string">
         /Transaction/00000000000101000000/1.xml
     </sem:subject>
     <sem:predicate>isLatestVersion</sem:predicate>
     <sem:object datatype="http://www.w3.org/2001/XMLSchema#boolean">true</sem:object>
   </sem:triple>
 </aptp:Transaction>
Run Code Online (Sandbox Code Playgroud)

我希望以下代码片段返回最新版本 uri 的序列。它当前返回一个空集。

import module namespace sem = "http://marklogic.com/semantics" at "/MarkLogic/semantics.xqy";

let $uris :=
  (
    "/Transaction/00000000000101000000/1.xml",
    "/Transaction/00000000000101000001/1.xml",
    "/Transaction/111111/1.xml"
  )

let $query := cts:triple-range-query($uris, "isLatestVersion", fn:true())

return
  cts:uris("", (), $query)
Run Code Online (Sandbox Code Playgroud)

我错过了一些明显的东西吗?

marklogic triplestore marklogic-8

1
推荐指数
1
解决办法
215
查看次数

在xquery中查找非词典值的频率

有没有办法找到没有范围索引的元素的频率?该

cts:frequency() 我使用的不支持任何不是词典的元素

xquery marklogic marklogic-8

1
推荐指数
1
解决办法
82
查看次数

使用java client api在marklogic中创建或添加集合

我们可以使用java客户端api在marklogic中创建一个新集合吗?因为我希望我的应用程序在启动时创建集合.

我知道我可以使用Querymanager.newDeleteDefinition删除一个集合,然后传入定义选项.

java marklogic marklogic-8

1
推荐指数
1
解决办法
164
查看次数

Marklogic-跨文档检索 XML 元素的不同值

我们正在构建一个以 ML 作为后端数据库的企业应用程序。要求之一是在不同文档中查找 XML 中特定元素的不同值。

我可以使用结构化查询/组合查询获取不同的entity_type吗

以下所有文档都是实体集合的一部分:

文件1

<xml>
    <entities>
        <entity_name>Imprezza</entity_name>
        <entity_type>Car</entity_type>
        <entity_color>Red</entity_color>
    <entities>
<xml>
Run Code Online (Sandbox Code Playgroud)

文件2

<xml>
    <entities>
        <entity_name>Ducati</entity_name>
        <entity_type>Bike</entity_type>
        <entity_color>White</entity_color>
    <entities>
<xml>
Run Code Online (Sandbox Code Playgroud)

文件3

<xml>
    <entities>
        <entity_name>Lancia</entity_name>
        <entity_type>Car</entity_type>
        <entity_color>Red</entity_color>
    <entities>
<xml>
Run Code Online (Sandbox Code Playgroud)

文件4

<xml>
    <entities>
        <entity_name>Scania</entity_name>
        <entity_type>Truck</entity_type>
        <entity_color>Black</entity_color>
    <entities>
<xml>
Run Code Online (Sandbox Code Playgroud)

要求:给我集合中所有不同的entity_type

结果:汽车、自行车、卡车

PS:需要在Java层获取结果。我们目前有一个 API,可以根据输入生成 MarkLogic 组合查询(结构化查询 + 选项查询)。我可以使用结构化查询/组合查询获取不同的实体吗?

marklogic marklogic-8

1
推荐指数
1
解决办法
352
查看次数

在markLogic中将xml文档导出到本地的最佳方法是什么?

我在MarkLogic DB中有400万个xml文档.我需要将所有XMLS存储在本地文件夹中.

什么是最好和最快的方法?

marklogic marklogic-8

1
推荐指数
1
解决办法
120
查看次数

Marklogic:元素值查询与路径范围查询

我正在做一些锻炼以找出性能方面哪个更好,无论是元素值查询还是路径范围查询。

我发现使用路径范围查询的搜索比元素值查询慢一点。

即使加载了额外的路径范围索引,有没有人知道使用路径范围查询搜索的速度缓慢。

我使用了下面的代码。

    xdmp:document-delete("/aname4.xml")
    xdmp:document-insert("/aname1.xml",
      <name><fname>John</fname><mname>Rob</mname><lname>Goldings</lname></name>),
    xdmp:document-insert("/aname2.xml",
      <name><fname>Jim</fname><mname>Ken</mname><lname>Kurla</lname></name>),
    xdmp:document-insert("/aname3.xml",
      <name><fname>Ooi</fname><mname>Ben</mname><lname>Fu</lname></name>),
    xdmp:document-insert("/aname4.xml",
      <name><fname>James</fname><mname>Rick</mname><lname>Tod</lname></name>)

    create path range index "/name/fname"

    checked response time with following search code

    cts:search(doc(),cts:path-range-query("/name/fname","=","Jim"),"filtered")

    cts:search(doc(),
      cts:element-value-query(xs:QName("fname"),"jim"),
    "filtered")
Run Code Online (Sandbox Code Playgroud)

在使用路径范围查询时,我应该考虑哪些特定的事情

任何建议都将受到高度赞赏,因为它有助于我们设计高效的搜索代码。

marklogic marklogic-8 marklogic-9

1
推荐指数
1
解决办法
134
查看次数

标签 统计

marklogic ×10

marklogic-8 ×10

xquery ×3

java ×1

marklogic-9 ×1

mlcp ×1

triplestore ×1