从 MarkLogic 搜索中检索字段值
Retrieve the field values from a MarkLogic search
我在 MarkLogic 中有一个 XQuery FLOWR 搜索,如下所示,returns 在基于字段排序的集合中分页匹配文档
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
我在具有相应字段范围索引的文档上设置了几个自定义字段,我想检索匹配文档的字段中的值,而不是文档本身。像下面这样的东西?
for $searchResults in search:search("someQuery", $options, 1, 10)
return get-field-values($searchResults, ("myCustomFieldA", "myCustomFieldB"))
我如何return这些字段值?
您的示例表明您希望结果按特定范围索引分页和排序。
cts:field-values() 可以在您的迭代中使用文档 URI 作为传递给第四个参数(查询参数)的文档查询的一部分。
不过,您可能会发现 cts:value-co-occurences 很有用。
搜索 API 确实支持使用 XPath 提取部分文档,这可能接近您想要的:
http://docs.marklogic.com/guide/search-dev/query-options#id_37692
如果您想 return 实际文档,您可能会发现 search:resolve-nodes() 函数比 search:search() 和 transform raw:
http://docs.marklogic.com/search:resolve-nodes
最后,如果您的字段有范围索引,search:values() 可以根据文档中的共现构造元组,这应该比检索文档更快,因为值是从索引中检索的:
我在 MarkLogic 中有一个 XQuery FLOWR 搜索,如下所示,returns 在基于字段排序的集合中分页匹配文档
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
我在具有相应字段范围索引的文档上设置了几个自定义字段,我想检索匹配文档的字段中的值,而不是文档本身。像下面这样的东西?
for $searchResults in search:search("someQuery", $options, 1, 10)
return get-field-values($searchResults, ("myCustomFieldA", "myCustomFieldB"))
我如何return这些字段值?
您的示例表明您希望结果按特定范围索引分页和排序。
cts:field-values() 可以在您的迭代中使用文档 URI 作为传递给第四个参数(查询参数)的文档查询的一部分。
不过,您可能会发现 cts:value-co-occurences 很有用。
搜索 API 确实支持使用 XPath 提取部分文档,这可能接近您想要的:
http://docs.marklogic.com/guide/search-dev/query-options#id_37692
如果您想 return 实际文档,您可能会发现 search:resolve-nodes() 函数比 search:search() 和 transform raw:
http://docs.marklogic.com/search:resolve-nodes
最后,如果您的字段有范围索引,search:values() 可以根据文档中的共现构造元组,这应该比检索文档更快,因为值是从索引中检索的: