2017-01-20 3 views
1

Я использую из коробки ML REST API POST v1/search, и я использую параметр transform?, чтобы преобразовать полученные результаты. Но я также хочу манипулировать строкой q, которая отправляется в конечную точку. Есть что-то вроде transform-query или что-то, что будет вызываться для преобразования строки запроса. Я понимаю, что мы можем написать пользовательскую конечную точку для этого, но я хочу избежать, если это можно сделать из конечной точки окна.Marklogic из окна запроса API API преобразования

ответ

0

То, что я есть написал пользовательский веб-сервис, который обрабатывает преобразование запроса, но я также, как и все Params, что вне коробки остальное апи делает, поэтому я скопировал XQUERY кодекс из коробки. Следующее - это то, что я сделал. В моем случае я делаю только расширение запроса

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") 

Кто-нибудь из вас думают, что там может быть что-то, что я мог бы быть не хватает? в настоящее время это, похоже, работает для меня.

1

Вы верны. В настоящее время нет поддержки преобразования на вход запроса для выполнения расширения запроса и других манипуляций с запросами.

Расширение службы ресурсов является текущим рекомендуемым методом, вызывающим либо cts: parse()/cts: search()/search: resolve(), либо search: search() с измененным запросом.

Надеясь, что помогает,

+0

В зависимости от необходимости рекомендуется использовать удлинение для отдыха, особенно если вы ищете расширение запросов на основе контента. – grtjn

+0

Для этого есть RFE, но до сих пор он не получил достаточного веса. – grtjn

2

Хотя это не поддерживается/v1/поиска, я думаю, что это разумно, что нужно сделать в среднем ярусе - например, уровень Java или NodeJS поверх REST API.

+0

Менее идеально подходит для расширения контента с использованием контента. – grtjn

1

Если вы хотите сделать это, добавив критерии поиска (вместо изменения строкового запроса), вы можете использовать комбинированный запрос с/v1/search для объединения исходного строкового запроса с структурированным запросом, который выражает дополнительные критерии.

http://docs.marklogic.com/guide/rest-dev/search#id_69918

Смежные вопросы