【问题标题】:cts:search and search:search while dealing with json docs处理 json 文档时的 cts:search 和 search:search
【发布时间】:2017-11-29 08:20:31
【问题描述】:

我的 json 文档如下所示:

{
  "directions": ["Heat oil in heavy... "], 
  "rating": 5, 
  "title": "Mahi-Mahi in Tomato Olive Sauce", 
  "ingredients": [
    "2 tablespoons extra-virgin olive oil", 
    "1 cup chopped onion", 
    "1 cup dry white wine", 
    "1 teaspoon anchovy paste", 
  ], 
  "sodium": null
}

当我跑步时:

cts:search(fn:doc(),"anchovy")/title/string()

我得到:Mahi-Mahi in Tomato Olive Sauce,这是我们想要的。

但是当我跑步时:

search:search("anchovy", $options)/search:result/title/string()

我得到一个空序列。注意:我设置了 transform-results = "raw"。

P.S 我观察到search:search("anchovy", $options)/search:result 提供的文档似乎是文本格式而不是 json。

在这种情况下使用search:search 是否可以得到想要的结果?

【问题讨论】:

    标签: search marklogic


    【解决方案1】:

    这应该可以完成工作:

    import module namespace search = "http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy";
    
    declare variable $options := <options xmlns="http://marklogic.com/appservices/search"><transform-results apply="raw" /><extract-metadata>
            <json-property>title</json-property>
        </extract-metadata></options>;
    
    search:search("anchovy", $options)//title/text()
    

    这里我们指定要从文档中提取并放入结果集中的 JSON 属性。

    附带说明一下,如果您经常使用 JSON 文档,则可能需要考虑使用 ServerSide JavaScript,在这种情况下,您也可以使用 jsearch

    【讨论】:

      猜你喜欢
      • 2015-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      相关资源
      最近更新 更多