我在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
我如何返回这些字段值?
答案 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()可以基于文档中的共现来构造元组,这应该比检索文档更快,因为从索引中检索值: