2017-01-20 3 views
1

私はすぐにML REST API POST v1/searchを使用していますが、transform?パラメータを使用して、生成された結果を変換しています。しかし、私はまた、エンドポイントに送信される文字列qを操作したいと思います。 transform-queryなど、クエリ文字列を変換するために呼び出されるものがありますか?これを行うためのカスタムエンドポイントを書くことができると私は理解していますが、これをボックスエンドポイントから外すことはできません。すぐに使えるMarklogicの残りのAPI変換クエリ

答えて

0

私は次のことをしています。私の場合、私はちょうど拡張

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 /検索でサポートされていないですが、私は、これは中間層で行うための合理的なものだと思う - 例えばREST APIの上にJavaまたはNodeJSレイヤーがあります。

+0

コンテンツ駆動型のクエリ拡張には理想的ではありません。 – grtjn

1

文字列クエリを変更するのではなく、検索条件に追加することで表現したい場合は、/ v1/searchを組み合わせたクエリを使用して、元の文字列クエリと表現する構造化クエリを組み合わせることができます追加基準私はので、私はのXQueryコードをコピーし、変換クエリを処理するカスタムWebサービスを書きましたが、私もアウトオブボックスのREST APIがないこと、すべてのparamsのように何をしたか

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

関連する問題