首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >marklogic客户端api与其他模块结合

marklogic客户端api与其他模块结合
EN

Stack Overflow用户
提问于 2018-08-09 09:12:44
回答 2查看 31关注 0票数 0

我们以前正在使用XQuery进行MarkLogic查询。我们希望用Java来代替它,因为它被更广泛的使用。

在我遇到模块查询之前,一切都很好。

import module namespace ent = "http://xxx.xx/model/entitlements" at "/Entitlements/entitlements.xqy";

在Xquery中,我们使用下面的内容。

代码语言:javascript
复制
let $final-query := ent:query($query, $cvUserId)
let $docs := cts:search(/, $final-query)
return $docs

ent:query(xx,xx)在我们的Linux服务器中,我们无法获得源代码。作为名称端,此查询将在执行搜索时执行权限检查。

为了获得结果,我在下面编写了Java代码。

代码语言:javascript
复制
QueryManager queryManager = markLogicClient.newQueryManager();
StringQueryDefinition queryDef = queryManager.newStringDefinition("OPTIONS");
queryDef.setCriteria("Title:test");
XMLDocumentManager dManager = markLogicClient.newXMLDocumentManager();
DocumentPage docs = dManager.search(queryDef, 1, new DOMHandle());
dManager.search(queryDef, 1);

它对我的测试效果很好,但没有权利检查。

有什么可以用Java应用我自己的查询ent:query(xx,xx)吗?

Marklogic-8 & marklogic-client-api-4.0.4

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-09 12:25:38

Java和XQuery API在MarkLogic中没有可比性,它们填充了不同的用例,实际上Java最终调用了XQuery。

XQuery (和JavaScript)在服务器内运行,Java在服务器外部运行并调用REST,然后在服务器中调用XQuery。如果您拥有非常好的XQuery,用Java重写它是没有意义的--充其量,性能将受到影响。相反,您可以作为“临时”表达式或作为存储模块从Java调用XQuery。这允许您为应用程序中受益于Java但保留现有代码的部分公开java。对于新代码,如果这样做是有意义的,Java是相当好的,但是对于您发现它无法满足您的需要的情况,您可以应用与上面相同的技术,并且仍然为您的应用程序提供相同的集成。

您可以在这里看到使用Java调用ML的各种方法的一些示例,以及性能工作台标记:https://github.com/DALDEI/mlperf

票数 2
EN

Stack Overflow用户

发布于 2018-09-24 14:40:47

保留现有的XQuery代码,并使用简单的XQRS函数创建漂亮的XQRS Web。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51763108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档