问题标签 [marklogic-9]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
78 浏览

java - 带有批处理器的 MarkLogic 9 Java 客户端中的错误

我正在使用 MarkLogic Java 客户端加载大量数据。一段时间后我收到以下错误,然后它只是重复。

我从示例中复制和修改了以下代码:

doSomething 调用的地方

我怎样才能避免这个错误?

0 投票
2 回答
157 浏览

javascript - 带有 GET 请求的 MarkLogic App Server 自定义登录页面 sessionID cookie

我正在尝试使用使用服务器端 JavaScript 和 HTTP 应用程序服务器的 MarkLogic-9 开发一个两层 Web 应用程序。我有一个简单的页面,提示输入用户名/密码并通过 Ajax 向应用服务器发送 GET 请求(应用程序级身份验证)。

我的 login.sjs 脚本:

我已经对此进行了测试,并通过打印 xdmp.currentUser() 验证了它是否有效。

然后登录页面重定向到显示基本用户信息的主页。我的问题是,在客户端重定向到主页后,我无法弄清楚如何保留当前用户的会话。

应用服务器具有应用程序级别的身份验证和名为 Login-User 的默认用户,这是一个自定义用户,仅具有登录所需的权限 (xdmp:login)。应用服务器托管在 localhost:8601 上。我发现当我直接从浏览器运行 login.sjs 时(即输入 localhost:8601/login.sjs?username=test_user&password=test_password),我的浏览器会获取一个带有 sessionID 的 cookie。但是,当我通过 Ajax GET 请求运行 login.sjs 时,我的浏览器没有获得任何 cookie。我不知道这是否是问题,但我认为这可能值得一提。

我仍然是 MarkLogic 的新手,所以我可能会以完全错误的方式来解决这个问题。基本上,在重定向到新页面后如何继续单个用户的会话?我是否使用 cookie 来保存 sessionID?每次网站调用新的 .sjs 文件时,我是否应该将用户名和密码保存在本地存储中并登录?

为了完整起见,这里是我用来进行 Ajax 调用以登录的客户端 js。很不言自明。如果登录成功,login.sjs 文件只会返回 true/false。

}

问题是一旦页面重定向到 homepage.html,似乎没有用户登录的记忆,当 homepage.html 调用任何 .sjs 文件时,用户重置为默认值,即“登录用户”。

提前致谢。

0 投票
3 回答
1376 浏览

xquery - 如何在 Marklogic XQuery 中复制/克隆节点

我正在编写需要返回 XML 节点的修改版本的代码,而不更改父文档中的原始节点。

如何复制/克隆节点,以便原始上下文不会连接到它/受其影响?我不希望对此节点进行更改以更改父文档中的原始节点,而只是更改我的函数返回的副本。

我正在寻找的内容与 cts:highlight 在内部所做的非常相似:

返回node 的副本,将与查询匹配的任何文本替换为指定的表达式。您可以使用此功能轻松突出显示在查询中找到的任何文本。与 fn:replace 和其他匹配文字文本的 XQuery 字符串函数不同,cts:highlight 匹配与搜索匹配的每个术语,包括词干匹配或具有不同大小写的匹配。[marklogic 文档 > cts:highlight]

0 投票
1 回答
71 浏览

javascript - MarkLogic 9 集群 - 使用 SJS 限制到某些字段

我正在尝试使用服务器端 Javascript 用 MarkLogic 9 实现一个简单的集群应用程序。我有一个非常复杂的自定义查询构建器,它已经在 J​​S 中实现,所以我更愿意在 .sjs 文件中完成所有操作。

我的问题是我无法弄清楚如何将聚类搜索限制为仅查看文档的几个属性(即“标题”和“摘要”)。没有一个属性有孩子。我尝试按照莎士比亚戏剧演示,但它是在 XQuery 中实现的。

我当前的实现是一个 .xqy 文件,它使用 xdmp:javascript-eval 来使用我的 js 查询构建器。这有效并使用以下方法成功返回查询结果:

我认为问题出在我从莎士比亚示例中复制过来的 XQuery 代码中,但我已经使用了很多小时,但无法让它工作。这是我现在的 XQuery:

我最常遇到的错误是这样的:

我确信这是一些愚蠢的事情,但我没有使用 XQuery 的经验,所以我无法理解它,我现在只是把头撞在墙上。

0 投票
2 回答
163 浏览

javascript - MarkLogic 9 cts.parse 未正确解析查询

我正在使用 MarkLogic 9 开发基于 Web 的搜索应用程序。我有一个查询构建界面,允许用户将字符串输入到与数据库中文档的特定 JSON 属性相对应的文本框中。这个想法是用户可以完全按照 cts.parse(我使用服务器端 javascript,而不是 XQuery)所期望的那样输入搜索词,这样他们的搜索就可以任意复杂,我不必自己处理解析查询. 然而,在做了一些测试之后,我发现了一个关于在布尔逻辑中使用括号的奇怪现象。也就是说,当您在 cat 和 (dog OR bird) 之类的语句中包含括号时,cts.parse 会将 OR 误认为是搜索词。

我将从我的网站提供一个实际示例:

我已经构建了一个绑定对象来将查询绑定到我的文档的元素,

例如,我的服务器端脚本调用

以下是输入的字符串和返回的查询的一些示例:

  1. 脑或心或肺

这个正确地为“大脑”术语的 3 个字段(标题、摘要、网格术语)生成 jsonPropertyWordQuery,但对于其他两个术语没有这样做,它只是生成一个 cts.wordQuery()。

  1. 大脑或心脏和肺

  1. 脑或(心脏和肺)

2和3看起来是一样的。第一部分正确生成一个 jsonPropertyWordQuery,但其他术语作为基本单词查询,我试图避免。

  1. (大脑或心脏)和肺

在这里,解析器似乎没有识别出 OR 是一个运算符,因为即使它正确生成了 jsonPropertyWordQueries,它也在搜索中包含了 OR 作为一个术语。

老实说,我很难找到任何正确的查询,这让我相信我一定做错了什么。我不知道那可能在哪里。我是否在滥用 cts.parse 或绑定对象?

任何帮助将不胜感激。

0 投票
1 回答
79 浏览

javascript - 如何在 HTML 上显示来自 MarkLogic 的 Serverside-JS 搜索结果

我是 Javascript 和 MarkLogic 9 的新手。目前,我正在尝试通过服务器端 Javascript 以 HTML 格式显示搜索结果。(不是客户端 node.js API)

如果我从浏览器直接访问 .sjs 文件,查询结果似乎很好,但无法将其设为 func() 并从 HTML(表示层)运行。HTML 和 .sjs 文件都托管在 ML 服务器中)

有人可以帮我吗?

0 投票
0 回答
58 浏览

marklogic - 有一个停用词的排序列表,在搜索中忽略停用词的最有效技术是什么:建议?

虽然我在“Inside MarkLogic Server”中找到了包含停用词的部分,但我现在似乎无法消化它,即如何查找和使用“StopKeySet”。如果有详细指南,请提供线索。

我的客户提供了已排序的停用词列表(大约 120 个不同且已排序)。我将它作为字符串数组中的 json 键存储在文档中。我通过 mlcp 将它摄取到我的“常量”uri 和集合中。

为了解决它,我安排了一个字段和字段范围索引,将其称为停用词,其中包括 json 文档中停用词数组的键名。然后对于我们的 rest 服务中的每个 search:suggest 请求,我过滤查询字符串以删除我的索引停用词集中存在的每个停用词,使用 cts:field-value-match("stopwords", each word in query string, options) .

这是正确的方法,还是有比这更原子的方法?

0 投票
2 回答
201 浏览

marklogic - 无法在查询控制台中创建新选项卡(在 MarkLogic 中)

我只是在学习使用 MarkLogic,通过教程等。我收到一条我不明白的错误消息。当我在查询控制台中并需要创建一个新选项卡时,我单击现有选项卡行右端的加号,我收到以下错误消息而不是新选项卡:

这最近奏效了,但现在没有了。

0 投票
1 回答
131 浏览

xquery - 不存在锁时收到 XDMP-LOCKED 错误

我有一个我为生成序列号而编写的函数。功能如下:

该函数使用以下测试代码在 qconsole 窗口中正常工作:

即它在另一个事务上下文中执行并正确更新文档。但是,当我尝试从 REST 服务调用相同的函数时,它会返回以下错误消息:

请注意,我清理了服务接口中的所有其他代码以隔离问题,但仍然收到相同的错误消息。

所以这是我的问题:

  • 在什么情况下会发出此错误?
  • 我确信没有任何其他进程对该文档(或它所在的目录)进行锁定,那么什么可能会触发这样的误报?
  • 由于它在 qconsole 中工作,我假设如果我复制它在执行程序时所做的事情,我也可以解决这个问题。关于 qconsole 如何执行程序的任何文档?

非常感谢
K。

PS:我在 Windows 服务器上使用 MarkLogic 9

0 投票
2 回答
883 浏览

json - 在 MarkLogic 9 中更新 JSON 数组

我无法弄清楚如何编写一些 XQuery。我在 MarkLogic 中有一个 JSON 结构,如下所示:

exclude数组包含幻灯片中幻灯片的标识符(演示文稿由一张或多张幻灯片组成)。我正在尝试编写一段代码,它将在该排除列表中查找幻灯片 ID,如果存在则将其删除,如果不存在则将其添加(切换)。

我可以使用以下方法获取数组节点本身:

但我无法终生看到我如何更新该数组以删除或添加项目。目的是调用一个类似的函数:

那么,如何更新该数组?