我有以下XML。当我在班加罗尔寻找城市时作为Telegana,它不应该返回任何结果,因为城市和州属于不同的地址元素......
XML Document :
<person>
<name>Sundeep</name>
<address>
<city>Bangalore</city>
<state>Karnataka</state>
</address>
<address>
<city>Hyderabad</city>
<state>Telangana</state>
</address>
</person>
搜索:city = Bangalore&amp;状态=特兰伽纳
当前输出:使用以下查询时返回人员文档
<search:and-query>
<search:value-query>
<search:element name="city"/>
<search:text>Bangalore</search:text>
</search:value-query>
<search:value-query>
<search:element name="state"/>
<search:text>Telangana</search:text>
</search:value-query>
</search:and-query>
例外输出:由于城市和州都属于两个不同的 地址元素它不应该在结果中返回上面的文档。任何 使用REST-API或XQuery解决这个问题的指针?
答案 0 :(得分:2)
我实际上今天早些时候使用/ v1 / search REST API解决了这个问题:Marklogic 8 xml search
要使用xQuery作为解决方案,这对你来说很合适:
xquery version "1.0-ml";
import module namespace search =
"http://marklogic.com/appservices/search"
at "/MarkLogic/appservices/search/search.xqy";
let $options :=
<options xmlns="http://marklogic.com/appservices/search">
<constraint name="address">
<element-query name="address" ns="" />
</constraint>
<constraint name="city">
<value>
<element ns="" name="city"/>
</value>
</constraint>
<constraint name="state">
<value>
<element ns="" name="state"/>
</value>
</constraint>
</options>
return
search:search('address:(city:Bangalore AND state:Karnataka)', $options)