2017-02-15 18 views
2

MarkLogicとXQueryを使い始めるのは非常に新しいものです。MarkLogic - 検索を拡張し、特定のオブジェクトノードを返します

私は返すように Search Transformを作成しようとしています

、ここで文書

の特定のレベルから実際のJSONはサンプル文書です。

enter image description here

私は(、転写、トピック、バナーなど)検索結果がより低いレベルにある全JSONベースのsegmentどんなにを返すために

に周りの水しぶき

をしたいと思いますクエリコンソール...

search:search('trump')/search:result/search:snippet//@path

が正常を返します。 DOC

FN:DOC( "/ 20170120/NBCNightlyNews/1830/NBC")/配列ノード( "セグメント")/オブジェクトノード()1 /転写物FNでラップされたオブジェクトの/ノード( "0時00分02秒")/テキスト( "メッセージ")

しかし、

私は、変換中に類似したXPath式をimplmentしようとします。

let $root := $content/* 
return document {$root/search:result/search:snippet//@path} 

そして、それを実行しようと、私は返すように変換得ることができる場合には、

<error-response xmlns="http://marklogic.com/xdmp/error"> 
<status-code>400</status-code> 
<status>Bad Request</status> 
<message-code>XDMP-CHILDNODEKIND</message-code> 
<message> 
XDMP-CHILDNODEKIND: $root/search:result/search:snippet/descendant-or-self::node()/@path -- document nodes cannot have attribute node children 
</message> 
</error-response> 

を返します(関係なく、XPath式が何であるかで、単に$ルート自体のほかに別の障害が発生しています)パスを評価し、適切なJSONセクションを取得してリターンすることができます。

どのような考えですか?

答えて

2

検索するにはa REST API service extensionと書いてあるようです。その場合は、組み込み機能を使用している代わりに/v1/searchエンドポイントを使用することを検討してください。

あなたがしようとしていることを正確にはわかりません:ドキュメントの「セグメント」部分からスニペットを戻したいのですか、どこに関係なくドキュメントの完全な部分を返すか試合は?

場合は、customize the snippetingの場合は、一致する候補の送信元を指定します。

後者の場合、返される内容を完全に制御できるようにa search transformを書くことができます。

これらのオプションは、REST APIを使用するかSearch APIを呼び出すかにかかわらず、利用できます(同じと思います)。

+0

こんにちはデイブ、ご返信ありがとうございます。以前は '/ v1/search'を使用していましたが、最終的に検索をさらにカスタマイズする必要があります(私たちは検索に組み込む必要のある重量を提供するコンテンツ解析サーバを使用しています。私はTransformsをちょっと調べてから、カスタム検索ロジックに戻る必要があると考えています。私は提案されたドキュメントを読んだ後で元に戻します – Busturdust

+1

最終目標に応じて、データオプションを使用すると、一致するドキュメントの選択された部分を抽出することができます。http://docs.marklogic.com/guide/search-dev/query-options#id_37692 – kcoleman

+1

DaveとKimがヒントしているように、あなたのリソースサービスの拡張機能は、あなたに敏感なXPathベースの抽出を提供します。 – ehennum

関連する問題