是否可以获得默认搜索语法的 XML 副本?

Is it possible to get an XML copy of the default search grammar?

我正在做 MarkLogic 搜索应用程序的翻译版本,我想翻译搜索语法(AND、OR 等)。我目前只使用默认运算符,我意识到它们是 documented,但是有什么方法可以用 XML 或 JSON 格式获取它?

检索默认搜索选项的端点只有 returns 极少数元素,其中 <grammar> 不是一个:

https://server:port/v1/config/query/default/

我尝试获取子元素本身:

https://server:port/v1/config/query/default/grammar

但我回来了

RESTAPI-NODOCUMENT: (err:FOER0000) Resource or document does not exist: category: options message: Child of options node at 'default/grammar' not found

查看 MarkLogic 安装文件,在 MarkLogic/Modules/MarkLogic/appservices/search/search-impl.xqy

您将在 $default-options:

中找到默认语法
<search:grammar>
    <search:quotation>"</search:quotation>
    <search:implicit><cts:and-query strength="20"/></search:implicit>
    <search:starter strength="30" apply="grouping" delimiter=")">(</search:starter>
    <search:starter strength="40" apply="prefix" element="cts:not-query">-</search:starter>
    <search:joiner  strength="10" apply="infix" element="cts:or-query" tokenize="word">OR</search:joiner>
    <search:joiner  strength="20" apply="infix" element="cts:and-query" tokenize="word">AND</search:joiner>
    <search:joiner  strength="30" apply="infix" element="cts:near-query" tokenize="word">NEAR</search:joiner>
    <search:joiner  strength="30" apply="near2" consume="2" element="cts:near-query">NEAR/</search:joiner>
    <search:joiner  strength="32" apply="boost" element="cts:boost-query" tokenize="word">BOOST</search:joiner>
    <search:joiner  strength="35" apply="not-in" element="cts:not-in-query" tokenize="word">NOT_IN</search:joiner>
    <search:joiner  strength="50" apply="constraint">:</search:joiner>
    <search:joiner  strength="50" apply="constraint" compare="LT" tokenize="word">LT</search:joiner>
    <search:joiner  strength="50" apply="constraint" compare="LE" tokenize="word">LE</search:joiner>
    <search:joiner  strength="50" apply="constraint" compare="GT" tokenize="word">GT</search:joiner>
    <search:joiner  strength="50" apply="constraint" compare="GE" tokenize="word">GE</search:joiner>
    <search:joiner  strength="50" apply="constraint" compare="NE" tokenize="word">NE</search:joiner>
</search:grammar>

更简单的是,您可以使用:search:get-default-options() 然后使用 XPath 到 search:grammar:

xquery version "1.0-ml";
import module namespace search = "http://marklogic.com/appservices/search"
    at "/MarkLogic/appservices/search/search.xqy";

search:get-default-options()/search:grammar