似乎存在unfiltered与case-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。
我正在尝试设计一个利用 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) 我试图在 QConsole 中插入以下代码,但不断收到下面提到的错误。
[1.0-ml] XDMP-ENTITYREF: (err:XPST0003) Invalid entity reference " "
Stack Trace
At line 4 column 6:
In xdmp:eval("xquery version "1.0-ml"; let $uri := "/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)
在托管 (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) 标记逻辑 9.0.8.2
目前我们使用以下方式记录/查看 MarkLogic 日志文件中的调试/信息/警告/错误
在 dev/ST/UAT/Prod 环境中记录和维护相同代码时,我们应该遵循哪些最佳实践?
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 { .
谢谢!
在函数签名不允许的情况下将空序列传递给函数时,我得到了令人惊讶的行为。查询控制台中的示例:
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)
为什么在第一个代码示例中没有强制执行函数签名?
我是标记逻辑的新手。我想在查询控制台中创建一个带有集合的 json 文件。怎么做?我已经在名为“Test”的 marklogic 服务器中创建了一个数据库。而且我还插入了没有集合的 serval json 文件。如何使用 XQuery 或其他方法设置集合?
我们有一个 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 的顺序阅读文档,有什么解决方案?
任何帮助表示赞赏..!
我有一组用户名,他们将从 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)