从查询控制台执行测试代码时,是否还要导入位于模块db中的XQuery模块?我假设QueryConsole被设置为仅从文件系统加载模块,这就是为什么当我尝试加载我的时,我得到的模块没有找到.
我正在寻找一种简单的方法来测试我编写的XQuery代码,而我现在正在做的是简单地将整个代码与多个模块中的所有函数粘贴到同一个查询选项卡中以便进行测试.
有没有人对他们如何为MarkLogic测试他们的xquery模块有任何建议?
更新
我尝试了下面的建议,指定内容db而不是模块db.但我仍然没有成功.
而我得到的错误是:
XDMP-MODNOTFOUND: (err:XQST0059) Module /AbbVie/authorization/lib/authorization.xqy not found
Run Code Online (Sandbox Code Playgroud)
解决
在尝试遵循建议时,我将库文件加载到不正确的路径中.
我有一个奇怪的问题,我正在做cts:uri和cts:search ..而且我的cts:uris给了我7个结果,其中cts:搜索只给出了3个结果..
不知道我做错了什么,希望有人可以指出我做错了什么.我尝试了所有我认识的可能性:) ..遵循我正在运行的代码
xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";
import module namespace search = "http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy";
let $q := '(Dermatolog*) AND ((context:KN)) AND ((gene:"STAT3") AND (indication:"Carcinoma")) AND ((uploadDate:"today")) AND (sort:date_desc)'
let $options :=
<options xmlns="http://marklogic.com/appservices/search">
<additional-query>
<cts:collection-query xmlns:cts="http://marklogic.com/cts">
<cts:uri>http://abc/xyz/type/envelope</cts:uri>
</cts:collection-query>
</additional-query>
<operator name="sort">
<state name="date_desc">
<sort-order type="xs:dateTime" direction="descending">
<field name="upload_date"/>
</sort-order>
</state>
<state name="date_asc">
<sort-order type="xs:dateTime" direction="ascending">
<field name="upload_date"/>
</sort-order>
</state>
</operator>
<constraint name="context">
<range type="xs:string" facet="true">
<element name="context" ns="http://abc/xyz/metadata"/>
<facet-option>frequency-order</facet-option>
<facet-option>descending</facet-option>
</range>
</constraint>
<constraint name="type"> …Run Code Online (Sandbox Code Playgroud) 我有像-
<domain xmlns:c="http://example.com/ns/core" xmlns="http://example.com/ns/core">
<c:id>http://example.com/xyz/no-data</c:id>
</domain>
Run Code Online (Sandbox Code Playgroud)
我在MarkLogic使用JavaScript,并且要运行的元素值的查询上c:id。像这样-
cts.elementValueQuery(xs.QName("c:id"), "http://example.com/xyz/no-data")
Run Code Online (Sandbox Code Playgroud)
但是为此,我需要声明名称空间c。如果是xQuery,我们可以做这样的事情-
declare namespace c="http://example.com/ns/core";
Run Code Online (Sandbox Code Playgroud)
但是我无法获得如何在JavaScript中执行此操作。
只是数据.状态选项卡中的数据库大小应为0 MB.
是否有任何API可以完成工作,如果我尝试使用unix命令清除所有目录,该怎么办?推荐吗?
我正在使用带有日期的JSON文档,我正在尝试创建范围索引.当我这样做ISO8601格式时
2015-11-02T00:00:00-0600
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
IndexerEnv::putRangeIndex: XDMP-RANGEINDEX: Range index error: date "2015-11-02T00:00:00-0600": XDMP-LEXVAL: Invalid lexical value "2015-11-02T00:00:00-0600"
Run Code Online (Sandbox Code Playgroud)
我认为它需要在UTC时间,并且最后还需要一个'Z'表示祖鲁时区,所以我强制测试时间如下
2015-11-02T00:00:00Z
Run Code Online (Sandbox Code Playgroud)
我仍然得到同样的错误..
IndexerEnv::putRangeIndex: XDMP-RANGEINDEX: Range index error: date "2015-11-02T00:00:00Z": XDMP-LEXVAL: Invalid lexical value "2015-11-02T00:00:00Z"
Run Code Online (Sandbox Code Playgroud)
这有什么不对?还有另一个问题,Marklogic是否只在我们在日期添加'Z'(祖鲁时区)时才了解日期?
谢谢
我想在xml标签上进行分面,并在标签值上进行子分面,我有一个像下面这样的xml文档
<TermiteJServiceResponse>
<EntityTypeHit type="DRUG">
<HitCollection>
<Hit type="DRUG" id="CHEMBL1201288">
<Name>Dantrolene</Name>
</Hit>
<Hit type="DRUG" id="CHEMBL286398">
<Name>Propylene Glycol</Name>
</Hit>
<Hit type="DRUG" id="GXC376D7F8C0E7A0C3787E8A2384DC56E80">
<Name>PEG400</Name>
</Hit>
</HitCollection>
</EntityTypeHit>
<EntityTypeHit type="COMPOUNDS">
<HitCollection>
<Hit type="COMPOUNDS" id="A-409912.5">
<Name>A-409912.5</Name>
</Hit>
<Hit type="COMPOUNDS" id="A-409912">
<Name>A-409912</Name>
</Hit>
</HitCollection>
</EntityTypeHit>
<EntityTypeHit type="GENE">
<HitCollection>
<Hit type="GENE" id="TRH">
<Name>thyrotropin-releasing hormone</Name>
</Hit>
</HitCollection>
</EntityTypeHit>
<EntityTypeHit type="BIOPROC">
<HitCollection>
<Hit type="BIOPROC" id="BP70302">
<Name>infusion</Name>
</Hit>
<Hit type="BIOPROC" id="D009200">
<Name>Myocardial Contraction</Name>
</Hit>
<Hit type="BIOPROC" id="BP70198">
<Name>cmax values</Name>
</Hit>
<Hit type="BIOPROC" id="D001835">
<Name>Body Weight</Name>
</Hit>
<Hit type="BIOPROC" id="D062186">
<Name>Arterial Pressure</Name> …Run Code Online (Sandbox Code Playgroud) 更新:见结束 - 一个例子表明 cts:uris 不是一种有效的方法,因为它不会在所有情况下都返回正确的结果。
我有一个用例,在 MarkLogic 中,有时在包含 cts:reverse-query 的搜索结果中会有数十万个匹配项。有了这个,我想要返回的是与结果匹配的文档的 URI,以便我可以缓存它们并稍后通过 Corb2 处理它们。
示例代码:
xquery version "1.0-ml";
let $_ := xdmp:invoke-function(function(){
for $val in ("foo", "bar", "baz")
let $query := <query>{cts:element-word-query(xs:QName("what"), ($val))}</query>
return (
xdmp:document-insert("/test/reverse-" || $val ||".xml", $query, (), ("test-reverse")),
xdmp:commit()
)
},<options xmlns="xdmp:eval">
<transaction-mode>update</transaction-mode>
</options>
)
return for $result in cts:search(collection("test-reverse"), cts:reverse-query(<what>baz</what>))
return xdmp:node-uri($result)
Run Code Online (Sandbox Code Playgroud)
这将返回:
/test/reverse-baz.xml
Run Code Online (Sandbox Code Playgroud)
这是预期的。
但是,我觉得我在这里做了太多处理,因为我已经有了来自 cts:search() 的文档。但话又说回来,因为 ML 是懒惰的,也许即使是现在,我真的只有一个参考,因为我没有访问文档中的任何内容..?
我想要的是使用 cts:uris() 来获得与上述相同的结果。但是,您不能将 cts:reverse-query 与 cts:uris() 一起使用
是的,我知道反向查询不一定需要作为文档存在于数据库中才能使用它(cts:包含示例),因此在某些用例中,URI 甚至不存在。但对我来说,他们做到了。
另外,我很确定我可以使用xdmp:plan()通过拉出最终计划 …
让我们说我们有json的样子
{
"name":"abc",
"lastName":"xyz",
"description":"aaaaa aaaa",
"dob":11-10-1988,
"workInformation":[
{
"address":"kolkata",
"workFor":"vvv Pvt Ltd",
"reference" : [
{
"refName" : "ttt",
"refId" : "12345"
},
{
"refName" : "sss",
"refId" : "23412"
}
]
},
{
"address":"bangalore",
"workFor":"www Pvt Ltd",
"reference" : [
{
"refName" : "rrr",
"refId" : "43434"
},
{
"refName" : "yyyy",
"refId" : "34213"
}
]
},
{
"address":"delhi",
"workFor":"sss Pvt Ltd",
"reference" : [
{
"refName" : "qqqq",
"refId" : "76767"
},
{
"refName" : "gggg", …Run Code Online (Sandbox Code Playgroud) 我想从文档的数组元素部分搜索具有键值的元素.让我说我有json看起来像 -
{
"name":"abc",
"lastName":"xyz",
"description":"aaaaa aaaa",
"dob":11-10-1988,
"workInformation":[
{
"address":"kolkata",
"workFor":"vvv Pvt Ltd"
},
{
"address":"bangalore",
"workFor":"www Pvt Ltd"
}
]
}
Run Code Online (Sandbox Code Playgroud)
假设我想在数组属性workInformation中使用java api搜索下面提到的键和值 -
key - workFor,value - vvv私人有限公司
请让我知道,怎么做.
谢谢阅读.
我正在使用 Marklogic 8.0.6 和 xquery 请求。
我通过应用程序服务器执行那些 xquery 请求,但似乎巨大的请求已达到超时并返回以下错误:
eval XQuery on server: cannot process response with 504 status
Run Code Online (Sandbox Code Playgroud)
您能否给出要修改的设置以增加此超时?
谢谢,罗曼:)