REST MarkLogic中的自定义搜索结果

时间:2014-10-01 14:47:54

标签: rest xslt marklogic

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

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

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

我有XSLT的基本知识,如果我刚刚使用xPath创建了针对每个文件标题的内容,这是否可行,或ML是否需要使用自定义函数?

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

3 个答案:

答案 0 :(得分:2)

听起来你在谈论MarkLogic REST API的GET /v1/keyvalue端点。不幸的是,这不允许您选择转换。但是,您可以使用变换参数GET /v1/search来代替元数值查询使用结构化查询。文档中包含一个好的syntax reference

有关创建和管理转换的文档,请访问:

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

HTH!

答案 1 :(得分:2)

您可以在search:searchextract-metadata的搜索选项中使用/v1/search/ REST API endpoint,将title元素包含在结果中的元数据元素或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

答案 2 :(得分:0)

这是键值还是全文?对于键值,您可以使用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