从MarkLogic搜索中检索字段值

时间:2016-11-25 16:44:34

标签: marklogic

我在MarkLogic中有一个XQuery FLOWR搜索,如下所示,它返回基于字段排序的集合中的分页匹配文档

error TS2307: Cannot find module

我在具有相应字段范围索引的文档上设置了几个自定义字段,我想检索匹配文档的字段中的值,而不是文档本身。像下面这样的东西?

let $options := 
  <options xmlns="http://marklogic.com/appservices/search">
    <transform-results apply="raw"/>
    <additional-query> 
      {cts:collection-query("http://example.com/myCollectionName")} 
    </additional-query>
    <sort-order direction="descending" >
      <field name="myCustomFieldA" />
    </sort-order>
     <debug>true</debug> 
  </options>

for $searchResults in search:search("someQuery", $options, 1, 10)
return $searchResults

我如何返回这些字段值?

2 个答案:

答案 0 :(得分:2)

您的示例表明您希望结果按特定范围索引分页和排序。

cts:field-values()可以在迭代中使用,文档URI作为传递给第4个参数(查询参数)的文档查询的一部分。

但是,您可能会发现cts:value-co-occurences很有用。

答案 1 :(得分:2)

Search API支持使用XPath提取部分文档,这可能接近您想要的内容:

http://docs.marklogic.com/guide/search-dev/query-options#id_37692

如果要返回实际文档,可能会发现搜索:resolve-nodes()函数比搜索更有用:search()with transform raw:

http://docs.marklogic.com/search:resolve-nodes

最后,如果您的字段具有范围索引,则search:values()可以基于文档中的共现来构造元组,这应该比检索文档更快,因为从索引中检索值:

http://docs.marklogic.com/search:values

相关问题