标签: marklogic

不区分大小写,未过滤的搜索在 MarkLogic 中返回错误结果

似乎存在unfilteredcase-sensitive搜索相关的问题。

我正在运行element-value-querywithcase-sensitive选项。

ctsunfiltered搜索返回了错误的结果。

以下代码片段表现出错误的行为。

情况1:

xdmp:document-insert('/a.xml', <a><name>Dixit</name></a>);

cts:search(
  doc('/a.xml'),
  cts:element-value-query(xs:QName('name'), 'dixit','case-sensitive'),
  'unfiltered'
);
Run Code Online (Sandbox Code Playgroud)

输出:返回插入的 xml

预期:它不应该返回

这里我认为在索引中,键Dixit等于“dixit”,因此返回 XML。

所以我尝试了以下一种但没有收获。

案例2:

xdmp:document-insert('/a.xml', <a><name>Dixit singla</name></a>);

cts:search(
  doc('/a.xml'),
  cts:element-value-query(xs:QName('name'), 'dixit singla','case-sensitive'),
  'unfiltered'
);
Run Code Online (Sandbox Code Playgroud)

输出:返回插入的xml

预期:它不应该返回

这是 MarkLogic 中的错误还是这是预期的行为。我很想知道原因。

注意: fast case sensitive searches &fast diacritic sensitive searches两个索引都设置为true

xml marklogic

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

XQuery 如果在输入处理期间发生错误,则出现意外情况

我正在尝试设计一个利用 MarkLogic 查询控制台和 MarkLogic 数据库的简单应用程序。

我的代码如下所示:

declare namespace link="http://www.xbrl.org/2003/linkbase";
declare namespace bd-alg="http://www.nltaxonomie.nl/nt11/bd/20161207/dictionary/bd-algemeen";
declare namespace bd-bedr="http://www.nltaxonomie.nl/nt11/bd/20161207/dictionary/bd-bedrijven";
declare namespace bd-bedr-tuple="http://www.nltaxonomie.nl/nt11/bd/20161207/dictionary/bd-bedr-tuples";
declare namespace bd-dim-mem="http://www.nltaxonomie.nl/nt11/bd/20161207/dictionary/bd-domain-members";
declare namespace bd-dim-dim="http://www.nltaxonomie.nl/nt11/bd/20161207/validation/bd-axes";
declare namespace xbrldi="http://xbrl.org/2006/xbrldi";
declare namespace xbrli="http://www.xbrl.org/2003/instance";
declare namespace iso4217="http://www.xbrl.org/2003/iso4217";
declare namespace xlink="http://www.w3.org/1999/xlink";

let $startDateInput := ""
let $endDateInput := ""

if($startDateInput)
  {
    then let $startDate := xs:date($startDateInput)
    else let $startDate := xs:date("1900-01-01")
  }
  
if($endDateInput)
  {
    then let $endDate := xs:date($endDateInput)
    else let $endDate := xs:date("2100-12-31")
  }
    
for $doc in /xbrli:xbrl
    let $docId := $doc/xbrli:context//xbrli:identifier/text()
    let $docStartDate …
Run Code Online (Sandbox Code Playgroud)

xml xquery marklogic

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

由“ ”实体引用引起的 XQuery Invalid entity reference 错误

我试图在 QConsole 中插入以下代码,但不断收到下面提到的错误。

[1.0-ml] XDMP-ENTITYREF: (err:XPST0003) Invalid entity reference " "
Stack Trace
At line 4 column 6:
In xdmp:eval("xquery version &quot;1.0-ml&quot;;&#10;let $uri := &quot;/mlrepo...", (), <options xmlns="xdmp:eval"><database>1979476059788016196</database>...</options>)

2. let $uri := "/mlreports/corb/arena_report.txt"
3. let $code :=
4. <code>
5. THREAD-COUNT=10
6. BATCH-SIZE=10
Run Code Online (Sandbox Code Playgroud)

下面是查询,我正在执行 -

xquery version "1.0-ml";
let $uri := "/mlreports/corb/arena_report.txt"
let $code :=
<code>
THREAD-COUNT=10
BATCH-SIZE=10
URIS-MODULE=/mlreports/selector/arena_report_selector.xqy
PROCESS-MODULE=/mlreports/transform/arena_report_transform.xqy
PROCESS-TASK=com.marklogic.developer.corb.ExportBatchToFileTask
EXPORT-FILE-NAME=arena_report.csv
PRE-BATCH-TASK=com.marklogic.developer.corb.PreBatchUpdateFileTask
EXPORT-FILE-TOP-CONTENT=UNIFIED DOC ID,SEAL ID,DMS NAME,DOCUMENT ID,PRODUCT ID,Legal Entity ID,Client ID,Client Type,Party Role,Document Type ID,Document Type Name,Document Title …
Run Code Online (Sandbox Code Playgroud)

xquery marklogic

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

Marklogic 在托管文档上使用 xPath 会生成此文档的所有版本


在托管 (dls:document-insert-and-manage(...)) 文档上使用 xpath 时,我想在此文档上使用 xpath 表达式来仅检索实际文档,尤其是对于其他用户。

使用 xpath 我要么得到文档的所有版本,要么没有文档。

我尝试在文档上设置权限。
限制 URI 只是为了创建。
保护路径无济于事,因为所有版本的 xpath 都是相同的。

是否有可能限制某些用户仅获取最新版本?

我们正在使用 Marklogic 9.0.8

例子:

设置文档

xquery version "1.0-ml";
import module namespace dls = "http://marklogic.com/xdmp/dls" at "/MarkLogic/dls.xqy";

declare variable $uri :="/smtextdocuments/9114.xml";
declare variable $document := document {
<envelope>
  <instance>
    <smtextdocuments>
      <uri>/smtextdocuments/9114.xml</uri><id>9114</id>
      <documentcontent>MyText</documentcontent>
    </smtextdocuments>
  </instance>
</envelope>
};

let $d := dls:document-insert-and-manage($uri,fn:true(), $document,
        "Manage textdocuments",
        (
         xdmp:permission("dls-user", "read"),
         xdmp:permission("dls-internal", "read"),
         xdmp:permission("dls-internal", "update")),
        ()
        )
return $d
Run Code Online (Sandbox Code Playgroud)

检索文档时会导致 2 或 none 元素,具体取决于实际用户的权限

xquery version "1.0-ml";
<queryresult> …
Run Code Online (Sandbox Code Playgroud)

marklogic marklogic-9

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

MarkLogic - 如何改进应用程序日志记录

标记逻辑 9.0.8.2

目前我们使用以下方式记录/查看 MarkLogic 日志文件中的调试/信息/警告/错误

  • XDMP:使用包含在 try-catch 块内的日志级别登录 Xquery
  • 应用级日志

在 dev/ST/UAT/Prod 环境中记录和维护相同代码时,我们应该遵循哪些最佳实践?

logging marklogic

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

如何在 MarkLogic 10 中的资源扩展中导入 JavaScript 模块

MarkLogic v10 引入了对原生 JavaScript 模块(ECMAScript 模块)的支持。

https://docs.marklogic.com/guide/jsref/modules

但是我不确定如何在资源扩展中导入这些模块。例如:

'use strict';

import * as jsearch = from '/MarkLogic/jsearch.mjs';

function get(context, params) {
  // omitted
};

exports.GET = get;
Run Code Online (Sandbox Code Playgroud)

会导致以下错误:

JS-JAVASCRIPT: import * as jsearch = from '/MarkLogic/jsearch.mjs'; -- 运行 JavaScript 请求时出错:SyntaxError: Unexpected token *;

同样,导入自定义模块如import { foo } from '/bar.mjs'导致类似的错误:Unexpected token { .

谢谢!

javascript marklogic

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

MarkLogic 不强制执行函数签名

在函数签名不允许的情况下将空序列传递给函数时,我得到了令人惊讶的行为。查询控制台中的示例:

declare function local:test($in as xs:string) { "Tested" };
local:test( () )
Run Code Online (Sandbox Code Playgroud)

这将返回一个空序列而不是字符串“Tested”,就好像该函数根本没有运行一样。XQuery 处理器不应该因为函数签名指定了一个 xs:string 值而抛出错误吗?相比之下,如果我添加一个问号使 xs:string 为零或一,则该函数会按预期返回“已测试”:

declare function local:test($in as xs:string?) { "Tested" };
local:test( () )
Run Code Online (Sandbox Code Playgroud)

为什么在第一个代码示例中没有强制执行函数签名?

marklogic

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

如何在查询控制台标记逻辑中设置集合

我是标记逻辑的新手。我想在查询控制台中创建一个带有集合的 json 文件。怎么做?我已经在名为“Test”的 marklogic 服务器中创建了一个数据库。而且我还插入了没有集合的 serval json 文件。如何使用 XQuery 或其他方法设置集合?

marklogic

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

按顺序阅读文档

我们有一个 URI 列表,我们需要按照传递的顺序读取这些 URI。

示例 1

doc(("/doc1", "/doc2", "/doc3"))
Run Code Online (Sandbox Code Playgroud)

上面的函数应该返回“/doc1”的内容,然后是“/doc2”,然后是“/doc3”,但它没有发生。

下面的查询也发生了同样的事情。

例2

cts:search(doc(), cts:document-query((("/doc1"),("/doc2"),("/doc3"))))
Run Code Online (Sandbox Code Playgroud)

如果我想以传递 URI 的顺序阅读文档,有什么解决方案?

任何帮助表示赞赏..!

xquery marklogic marklogic-10

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

从标记逻辑中删除用户

我有一组用户名,他们将从 marklogic 数据库中删除。列表中的某些用户可能存在也可能不存在于数据库中。我尝试使用以下脚本,但在找不到用户时失败。如何在未找到用户时让脚本运行而不停止,即继续删除下一个用户,而不是出错并停止脚本执行。请帮忙。

xquery version "1.0-ml";
import module namespace sec = "http://marklogic.com/xdmp/security" at "/MarkLogic/security.xqy";
declare variable $USERS := ("user1","user2","user3");
for $user in $USERS
     return $user||'-'||fn:empty((sec:remove-user($user)));
Run Code Online (Sandbox Code Playgroud)

下面是错误

[1.0-ml] SEC-USERDNE: (err:FOER0000) User does not exist: sec:user-name = user1
Stack Trace
In /MarkLogic/security.xqy on line 3612
In get-element("http://marklogic.com/xdmp/security", "sec:user", "sec:user-name", "user1", "SEC-USERDNE")
$col := "http://marklogic.com/xdmp/security"
$elem := "sec:user"
$filter := "sec:user-name"
$value := "user1"
$function-error := "SEC-USERDNE"
$filterValue := <sec:user-name xmlns:sec="http://marklogic.com/xdmp/security">user1</sec:user-name>
$outElem := ()
Run Code Online (Sandbox Code Playgroud)

xquery marklogic

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

标签 统计

marklogic ×10

xquery ×4

xml ×2

javascript ×1

logging ×1

marklogic-10 ×1

marklogic-9 ×1