开箱即用的 Marklogic rest API 转换查询
Marklogic out of the box rest API transform query
我正在使用开箱即用的 ML REST API POST v1/search
,并且我正在使用 transform?
参数来转换生成的结果。但我也想操纵发送到端点的字符串 q
。是否有类似 transform-query
之类的东西或将被调用以转换查询字符串的东西。我知道我们可以编写自定义端点来执行此操作,但我想避免开箱即用的端点。
你是对的。目前不支持对查询输入进行转换以执行查询扩展和其他查询操作。
资源服务扩展将是当前推荐的方法,调用 cts:parse() / cts:search() / search:resolve() 或 search:search()修改后的查询。
希望对您有所帮助,
虽然 /v1/search 不支持它,但我认为这是在中间层做的合理事情 - 例如Java 或 REST API 之上的 NodeJS 层。
如果您想要执行的操作可以通过添加到搜索条件(而不是修改字符串查询)来表达,您可以使用组合查询 /v1/search 将原始字符串查询与结构化查询组合起来表示附加标准。
我所做的是编写了一个处理转换查询的自定义 Web 服务,但我也喜欢 out-of-box rest api 所做的所有参数,所以我复制了out-of-box.. 以下是我所做的。在我的例子中,我只是在做查询扩展
let $search:= map:get($params,"q")
let $qexpand := repo-searchLib:queryExpand($search)
let $_ := map:put($params, "q", $qexpand)
let $headers := eput:get-request-headers()
let $env := eput:response-callback-map(eput:response-type-callback#1)
let $response := searchmodq:search-post($headers,$params, $env, xdmp:get-request-body(eput:get-content-format($headers,$params)))
let $has-matches := map:get($env, "has-matches")
return
if (exists($response)) then $response
else if ($has-matches) then ()
else xdmp:set-response-code(404,"Not Found")
你们有没有认为我可能遗漏了什么?目前这似乎对我有用。
我正在使用开箱即用的 ML REST API POST v1/search
,并且我正在使用 transform?
参数来转换生成的结果。但我也想操纵发送到端点的字符串 q
。是否有类似 transform-query
之类的东西或将被调用以转换查询字符串的东西。我知道我们可以编写自定义端点来执行此操作,但我想避免开箱即用的端点。
你是对的。目前不支持对查询输入进行转换以执行查询扩展和其他查询操作。
资源服务扩展将是当前推荐的方法,调用 cts:parse() / cts:search() / search:resolve() 或 search:search()修改后的查询。
希望对您有所帮助,
虽然 /v1/search 不支持它,但我认为这是在中间层做的合理事情 - 例如Java 或 REST API 之上的 NodeJS 层。
如果您想要执行的操作可以通过添加到搜索条件(而不是修改字符串查询)来表达,您可以使用组合查询 /v1/search 将原始字符串查询与结构化查询组合起来表示附加标准。
我所做的是编写了一个处理转换查询的自定义 Web 服务,但我也喜欢 out-of-box rest api 所做的所有参数,所以我复制了out-of-box.. 以下是我所做的。在我的例子中,我只是在做查询扩展
let $search:= map:get($params,"q")
let $qexpand := repo-searchLib:queryExpand($search)
let $_ := map:put($params, "q", $qexpand)
let $headers := eput:get-request-headers()
let $env := eput:response-callback-map(eput:response-type-callback#1)
let $response := searchmodq:search-post($headers,$params, $env, xdmp:get-request-body(eput:get-content-format($headers,$params)))
let $has-matches := map:get($env, "has-matches")
return
if (exists($response)) then $response
else if ($has-matches) then ()
else xdmp:set-response-code(404,"Not Found")
你们有没有认为我可能遗漏了什么?目前这似乎对我有用。