这是一个新手MarkLogic问题.想象一下像这样的xml结构,这是我真正的业务问题的凝结:
<Person id="1">
<Name>Bob</Name>
<City>Oakland</City>
<Phone>2122931022</Phone>
<Phone>3123032902</Phone>
</Person>
Run Code Online (Sandbox Code Playgroud)
请注意,文档可以并且将具有多个Phone元素.
我要求从每个文档中返回信息,该文档的Phone元素与电话号码列表中的任何一个匹配.该列表中可能包含几十个电话号码.
我试过这个:
let $a := cts:word-query("3738494044")
let $b := cts:word-query("2373839383")
let $c := cts:word-query("3933849383")
let $or := cts:or-query( ($a, $b, $c) )
return cts:search(/Person/Phone, $or)
Run Code Online (Sandbox Code Playgroud)
它正确地执行查询,但它返回Results元素内的一系列Phone元素.我的目标是为每个匹配的文档返回所有Name和City元素以及Person元素的id属性.例:
<results>
<match id="18" phone="2123339494" name="bob" city="oakland"/>
<match id="22" phone="3940594844" name="mary" city="denver"/>
etc...
</results>
Run Code Online (Sandbox Code Playgroud)
所以我认为我需要某种形式cts:search允许这个布尔功能,但也允许我指定返回每个文档的哪个部分.那时我可以进一步处理结果XPATH.我需要有效地执行此操作,例如,我认为返回文档uri的列表然后在循环中查询每个文档是不高效的.谢谢!
在我的ML8数据库中,有一些包含Dtm字段的JSON文档.您可以在下面的"数据:"中看到一个示例.我在这个字段上有一个标量类型dateTime的元素范围索引,并检查它是否有效我使用下面在'Test:'中看到的查询.结果如预期.
现在当我尝试查询这个时,我想要在某个日期之后使用Dtm字段获取所有文档,此查询不返回任何内容.您可以在"查询:"中查看下面的查询.
数据:
"Dtm": "2015-06-25T07:11:10.0Z"
Run Code Online (Sandbox Code Playgroud)
查询:
var date = xs.dateTime("2015-06-01T14:38:09.145231+02:00");
var b = cts.elementRangeQuery("Dtm", ">", date);
var c = cts.search(b);
c
Run Code Online (Sandbox Code Playgroud)
测试:
cts.elementValues([xs.QName("Dtm")], null, ['limit=3'], null, 1.0, null);
Run Code Online (Sandbox Code Playgroud)
测试结果:
2015-06-11T17:43:36
2015-06-11T17:43:37
2015-06-11T17:43:38
Run Code Online (Sandbox Code Playgroud) 有人可以建议某些方法将现有文档从一个集合(或默认集合)移动到MarkLogic中同一数据库/林中的另一个集合.
我看到marklogic提供了各种与之通信的接口.考虑到Java作为客户端应用程序,哪个是XCC,JAVA/REST是最佳选择.
如果我选择XCC而不是JAVA/REST,我会得到任何好处.
谢谢
我正在使用带有日期的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'(祖鲁时区)时才了解日期?
谢谢
我有一个基本的查询:
/*[fn:name()="something"]
Run Code Online (Sandbox Code Playgroud)
(1)Marklogic 7需要多秒,是否有一个索引我可以添加以使此查询更快?
(2)应该增加哪些内存限制以提高性能?
(3)是否有其他方法可以通过不同的查询来提高性能但获得完全相同的结果?
我有几个这样的JSON:
[{
"type": "car",
"field1": "test"
}, {
"type": "bike",
"field1": "test"
}]
Run Code Online (Sandbox Code Playgroud)
我将它们存储在MarkLogic 8.4中,我想对它们执行一些搜索查询以根据类型检索文档(例如:查找类型为"car"的所有文档).
我有两个可能的解决方案:
在表现和/或最佳实践方面,一种方法是否优于另一种方法?
谢谢,罗曼.
我正在关注marklogic的教程,
https://developer.marklogic.com/learn/2007-04-schema
在一个场景中,我有xsd文件
<!-- tutorial.xsd -->
<xs:schema targetNamespace="http://marklogic.com/tutorial"
attributeFormDefault="unqualified"
elementFormDefault="unqualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="name" type="xs:token"
abstract="false" nillable="false"/>
<xs:element name="qualification" type="xs:token"
abstract="false" nillable="false"/>
<xs:element name="born" type="xs:date"
abstract="false" nillable="false"/>
<xs:element name="dead" type="xs:date"
abstract="false" nillable="false"/>
<xs:element name="isbn" type="xs:unsignedLong"
abstract="false" nillable="false"/>
<xs:attribute name="id" type="xs:ID"/>
<xs:attribute name="available" type="xs:boolean"/>
<xs:attribute name="lang" type="xs:language"/>
<xs:element name="title" abstract="false" nillable="false">
<xs:complexType mixed="false">
<xs:simpleContent>
<xs:extension base="xs:token">
<xs:attribute ref="lang" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="library" abstract="false" nillable="false">
<xs:complexType mixed="false">
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element ref="book" maxOccurs="unbounded" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="author" abstract="false" …Run Code Online (Sandbox Code Playgroud) 我正在尝试运行此行,xdmp:unquote(concat('<info>', string( $paragraph) , '</info>'))但我遇到以下错误:xdmp:unquote("<info>LEARNING & MEMORY</info>") -- Invalid entity reference " " at line 1.看起来这个实体引用&导致了问题.我试图使用replace函数删除它但它仍然存在.我该怎么办?
始终建议使用xdmp:estimate而不是fn:count.我知道如何在cts中使用它:搜索但不确定可搜索的XPath表达式.例如,我试图search:facets在执行后返回返回的计数search:search,就像这样 -
xdmp:estimate($search-result/search:facet/search:facet-value)但是
XDMP-UNSEARCHABLE-- Expression is unsearchable在使用fn:count工作时我得到错误.
救命!
marklogic ×10
xquery ×4
marklogic-8 ×3
json ×2
collections ×1
f#-unquote ×1
javascript ×1
marklogic-7 ×1
performance ×1
timezone ×1
xml ×1
xpath ×1
xsd ×1