【问题标题】:Retrieve the field values from a MarkLogic search从 MarkLogic 搜索中检索字段值
【发布时间】:2016-11-25 16:44:33
【问题描述】:

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

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"))

我将如何返回这些字段值?

【问题讨论】:

    标签: marklogic


    【解决方案1】:

    您的示例表明您希望结果按某个范围索引进行分页和排序。

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

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

    【讨论】:

    • 这里的问题是,如果 myCustomFieldA 和 myCustomFieldB 是不同的类型,cts:field-values 似乎会抛出错误。我认为要真正实现我想要的输出,需要对每个相关字段调用一次 cts:field-values,到那时,获取原始文档并对其进行转换可能会更容易。
    • 如果您最终想要的只是索引中的内容(如您的示例中所示),那么检索文档并对其进行转换可能会产生更多开销。与两次调用 cts:field-values() 相比。另请参阅 ehennum 与 search:values() 相关的答案 - - 它可能在后台使用 cts:xxx-values 函数。
    【解决方案2】:

    搜索 API 确实支持使用 XPath 提取部分文档,这可能会接近您想要的:

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

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

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

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

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

    【讨论】:

    • Extract-document-data 看起来确实可以做我想做的事。我实际上正在使用参数在转换原始视图和 sn-p 视图之间进行交换,但是当仅使用搜索来获取文档时,解析节点确实看起来很有用。对我来说似乎很奇怪,我可以仅按名称根据字段排序结果,但不能轻松地将用于该排序的值包含在结果集中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多