【问题标题】:Custom Search Results in REST MarkLogicREST MarkLogic 中的自定义搜索结果
【发布时间】:2014-11-26 10:57:00
【问题描述】:

MarkLogic 的新手卡住了,找不到使用文档。我知道我需要做什么,只是不知道该怎么做。

我有一个键值?在我的 REST 服务器上搜索,它返回 ML 的标准搜索结果和 XML sn-p。我想创建自己的自定义搜索结果,它将为我的 XML 文件输出一个标题元素。

我知道我需要创建一个 XSLT 转换文档并将其上传到服务器,但不知道如何定位 ML 的搜索功能或如何写出来。

我有 XSLT 的基本知识,如果我刚刚使用 xPath 创建了针对每个文件标题的东西,这会起作用,还是 ML 需要使用它们的自定义函数?

我知道它有点宽泛,但希望有人可以指导我。

【问题讨论】:

    标签: rest xslt marklogic


    【解决方案1】:

    听起来您在谈论 MarkLogic REST API 的 GET /v1/keyvalue 端点。不幸的是,这不允许您选择转换。不过,您可能可以将GET /v1/search 与转换参数一起使用,将结构化查询用于元素值查询。该文档包含一个很好的syntax reference

    可以在此处找到有关创建和管理转换的文档:

    http://docs.marklogic.com/guide/rest-dev/transforms#chapter

    HTH!

    【讨论】:

      【解决方案2】:

      您可以在搜索选项中使用 extract-metadatasearch:search/v1/search/ REST API endpoint 以在结果中包含元数据元素或 JSON 属性中的标题元素:

      import module namespace search = "http://marklogic.com/appservices/search"
        at "/MarkLogic/appservices/search/search.xqy";
      
      search:search(
        "my query string",
        <options xmlns="http://marklogic.com/appservices/search">
          <extract-metadata>
            <qname elem-ns="" elem-name="title"/>
          </extract-metadata>
        </options>)
      

      如果您需要更大的灵活性,请在搜索选项中指定 custom snippet implementationresults decorator function

      【讨论】:

      • 这与我需要的非常接近,我的最后一个问题是我需要有一个条件,即仅在存在具有特定属性的元素时才返回结果。我尝试过使用约束,但它不起作用。最终我需要 /v1/keyvalue 来返回我的自定义搜索,或者我的元素/属性搜索来限制我的结果。
      • 你知道属性的可能值吗?如果是这样,您可以将值数组传递给值查询:docs.marklogic.com/guide/search-dev/structured-query#id_39758。如果没有,您可能需要调整您的数据模型。在 Marklogic 中,您可以使用 cts:element-query($qname, cts:and-query(())) 检查元素是否存在,但无法使用 cts:query 检查属性是否存在。
      【解决方案3】:

      这是键值还是全文?对于键值,您可以使用 XPath。任何以///fn:collection()fn:doc() 开头的XPath 都将搜索整个数据库。您也可以搜索特定的文档或集合。

      对于全文,您可能希望使用https://docs.marklogic.com/search:search - 或者可能使用https://docs.marklogic.com/cts:search 进行真正的低级控制。

      https://github.com/marklogic/RunDMC 有一些使用来自XSL 的search:search 的示例代码可能会有所帮助。它不使用 REST API:它是一个传统的表单提交网页。但是view/search.xsl 代码可能会让您了解如何从 XSLT 调用搜索 API。

      如果您需要从 XQuery 调用 XSL,该 RunDMC 代码也可能对您有所帮助:请查看 controller/transform.xqy

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-03
        • 1970-01-01
        • 2015-12-20
        • 1970-01-01
        • 2012-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多