我有一些xml文档,其结构如下:
<root>
<intro>...</intro>
...
<body>
<p>..................
some text CO<sub>2</sub>
.................. </p>
</body>
</root>
Run Code Online (Sandbox Code Playgroud)
现在我想用CO2短语搜索所有结果,并希望在搜索结果中获得上述类型的结果.为此,我使用此查询 -
cts:search
(fn:collection ("urn:iddn:collections:searchable"),
cts:element-query
(
fn:QName("http://iddn.icis.com/ns/fields","body"),
cts:word-query
(
"CO2",
("case-insensitive","diacritic-sensitive","punctuation-insensitive",
"whitespace-sensitive","unstemmed","unwildcarded","lang=en"),
1
)
)
,
("unfiltered", "score-logtfidf"),
0.0)
Run Code Online (Sandbox Code Playgroud)
但是使用这个我无法获得文档CO<sub>2</sub>.我只用简单的短语获取数据CO2.
如果我替换搜索短语,CO 2那么我只能使用CO<sub>2</sub>而不是使用CO2
我想获得两者的组合数据CO<sub>2</sub>和CO2搜索结果.
我可以<sub>通过任何方式忽略,还是有其他方法来解决这个问题?
我正在编写Rest Extension进行搜索,这将获取在JSON嵌套文档中搜索的参数.我能够通过编写自定义约束来完成此操作,然后使用此自定义约束解析搜索文本并构建查询.
我们也可以为排序顺序做同样的事情吗?顺便说一句,我的意思是我根据传递的参数为搜索选项构建排序顺序.
我在其中一个例子中看到,执行以下操作
let $options :=
<search:options>
<search:operator name="sort">
<search:state name="relevance">
<search:sort-order>
<search:score/>
</search:sort-order>
</search:state>
<search:state name="year">
<search:sort-order direction="descending" type="xs:gYear"
collation="">
<search:attribute ns="" name="year"/>
<search:element ns="http://marklogic.com/wikipedia"
name="nominee"/>
</search:sort-order>
<search:sort-order>
<search:score/>
</search:sort-order>
</search:state>
</search:operator>
</search:options>
return
search:search("lange sort:year", $options)
Run Code Online (Sandbox Code Playgroud)
但即便在这里也有一些硬编码要对哪些字段进行排序.我想做自定义约束,在运行时我确定排序顺序列.
这可能吗 ??
我有几个这样的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) 让我们说我们有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 Java API在查询下运行
cts:search(fn:doc(), cts:and-query((cts:collection-query("/abc/xyz"),
cts:collection-query("/abc/xyz/pqr"))))
Run Code Online (Sandbox Code Playgroud) 试图根据不同的过滤器和一个集合计算汽车数量.即使我们看到多辆汽车符合要求,查询也会返回0.
fn:count(cts:search(fn:collection("com.cars"), cts:and-query((
cts:element-word-query(xs:QName("exteriorColor"), "red", "wildcarded" ),
cts:element-word-query(xs:QName("interiorColor"), "gray", "wildcarded" )
cts:element-word-query(xs:QName("powerSteering"), json:null(), "wildcarded" )
))))
Run Code Online (Sandbox Code Playgroud)
测试数据:
{
"id":1
"carName":"Toyoto",
"exteriorColor": "red",
"interiorColor": "gray",
"powerStreering": null
}
{
"id":2
"carName":"Toyoto",
"exteriorColor": "blue",
"interiorColor": "gray",
"powerStreering": null
}
{
"id":3
"carName":"Toyoto",
"exteriorColor": "red",
"interiorColor": "gray",
"powerStreering": "yes"
}
{
"id":4
"carName":"Toyoto",
"exteriorColor": "white",
"interiorColor": "gray",
"powerStreering": null
}
{
"id":5
"carName":"Toyoto",
"exteriorColor": "red",
"interiorColor": "gray",
"powerStreering": null
}
Run Code Online (Sandbox Code Playgroud) 我在MarkLogic中有以下XML存储,
<testDoc>
<test>
<test1>test1</test1>
<test2>test2</test2>
<test3>test3</test3>
</test>
</testDoc>
Run Code Online (Sandbox Code Playgroud)
我的要求是只获得子节点的xpath,如果我将测试(部分节点名称)传递给我的xquery然后我期待
/testDoc/test/test1
/testDoc/test/test2
/testDoc/test/test3
Run Code Online (Sandbox Code Playgroud)
但是我的xquery回来了,
/testDoc
/testDoc/test
/testDoc/test/test1
/testDoc/test/test2
/testDoc/test/test3
Run Code Online (Sandbox Code Playgroud)
我在qconsole上执行的XQuery是,
xquery version "1.0-ml";
let $xml := document { fn:doc("/test/testDoc")}
let $elem-name := "test"
let $elems := $xml//*[local-name()[contains(lower-case(.), lower-case($elem-name))]]
return $elems ! xdmp:path(.)
Run Code Online (Sandbox Code Playgroud)
请指导我达到我的要求.