MarkLogic的新手被卡住了,没有找到使用文档。我知道我需要做什么,只是不知道该怎么做。
我有一个关键值?在我的REST服务器上搜索,返回ML的标准搜索结果和XML片段。我想创建自己的自定义搜索结果,它将输出我的XML文件的标题元素。
我知道我需要创建一个XSLT转换文档并将其上传到服务器,但不知道如何定位ML的搜索功能或如何写出来。
我有XSLT的基本知识,如果我刚刚使用xPath创建了针对每个文件标题的内容,这是否可行,或ML是否需要使用自定义函数?
我知道它有点宽泛,但希望有人可以引导我。
答案 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:search
或extract-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 implementation或results 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
。