Marklogic 8 xml search



假设我有一个如下的xml:

<xx>
    <yy>
        <name>A</name>
        <value>1</value>
    </yy>
    <yy>
        <name>A</name>
        <value>2</value>
    </yy>
    <yy>
        <name>B</name>
        <value>1</value>
    </yy>
</xx>

现在我要查找是否存在名称为A且值为1的'yy'。所以这里匹配的内容应该是:

<yy>
    <name>A</name>
    <value>1</value>
</yy>

我正试图通过REST调用,qbe GET请求来做到这一点,但无法做到。有人能帮我一下吗?

/v1/qbe
or
/v1/search

对于/v1/search API,您需要使用自定义搜索选项来实现这一点。

上传自定义搜索选项到MarkLogic: http://developer.marklogic.com/learn/rest/custom-search#search-using-an-element-value-constraint

您的搜索选项将根据您创建的索引定义搜索约束。你的搜索选项应该像这样:

<options xmlns="http://marklogic.com/appservices/search">
  <constraint name="yy">
    <element-query name="yy" ns="" />
  </constraint>
  <constraint name="name">
    <value>
      <element ns="" name="name"/>
    </value>
  </constraint>
  <constraint name="value">
    <value>
      <element ns="" name="value"/>
    </value>
  </constraint>
</options>

假设你上传这些选项为"mySearchOptions"

最后,您可以使用这个GET请求来获取您想要的搜索结果:

http://localhost REstrongERVER_PORT/v1/搜索? q = yy % 3(名称% 3 aa % 20和% 20值% 3 a1)和选项= mySearchOptions

你能显示你正在发送的QBE吗?

您应该能够将查询参数设置为

<yy><name>A</name><value>1</value></yy> 

加上适当的转义,如:

.../v1/qbe?query=%3Cyy%3E%3Cname%3EA%3C/name%3E%3Cvalue%3E1%3C/value%3E%3C/yy%3E

由于URL转义问题,通常更容易从编辑过的文件中发布QBE。

顺便说一下,如果目标是返回匹配的文档,就没有理由设置范围索引。通用索引匹配文档。

范围索引对于进行关系比较(例如<)、排序或从大量文档中提取值列表或元组非常有用。

最新更新