2017-06-12 7 views
1

ML9 Java APIを使用して検索オプションファイルをDBにアップロードし、後で検索コールで使用できる名前を使用しています。私はxqueryトランスフォームを書いて、レスポンス内の要素のセット内のクエリマッチを強調したいと思います。標準のスニペットは、マッチしたフィールドを返すだけであり、完全なフィールド値を戻すことができないため、マッチの直後のコンテキストのみを返すため、私のためには機能しません。MarkLogicの検索オプションを名前で使用する方法

私はカスタム変換でcts:highlight関数を使い、DBにアップロードしたオプションの名前を渡したいと思っています。私の質問は、変換メソッドに渡された名前を使用して、DBからoptions要素を取得する方法を知ることです。私は、CTSを構築するためにこれを使用したい:私はCTSに渡すことができますクエリ:のようにハイライトコール:

let $query := cts:query(search:parse($query-string, $options)) 
let $result := cts:highlight($doc, $query, <markup>{$cts:text} 
</markup>) 

私は、クエリ文字列や事前の名前で渡すことができます考えていましたこれらのオプションを使用してcts:queryを構築しますが、その名前からオプションを取得する方法はわかりません。

+0

代わりに抽出文書データを見ましたか?それはあなたのために維持するための仕事とコードが少なくなるかもしれません。 http://docs.marklogic.com/guide/java/searches#id_90087 –

+0

私は持っていますが、抽出されたフィールドで検索一致を強調表示するにはどうすればよいですか? –

+0

私はxqueryの変換がどのように書かれているかの一例を見つけることができません。サンプルコードでは、XSLT変換のしかたも示しています。 –

答えて

0

オプションは、RESTインスタンスに関連付けられたモジュールデータベースに格納されます。あなたはそれらを理論的に掘り下げることができますが、それは実装の詳細(URI)に依存します。

サムが言いましたように、抽出文書のデータと、検索結果の変換を組み合わせて見ることができます。

もう1つの方法は、変換結果を使用してオプションにプルするカスタムスニッパーです。 http://docs.marklogic.com/guide/search-dev/query-options#id_58295を参照してください。

+0

私がしようとしているのは、抽出文書のデータとスニペットを組み合わせた検索結果の変換です。スニペットは一致するフィールドと強調表示しないフィールドのみを返します。私はどのように私はctsを使用せずに何をすることができないのか分かりません:cts:クエリと結果を得るために使用したオプションを使用して一致する文書のハイライト。 –

+0

また、あなたが言及したリンクに見つからないURLがあります。 –

+0

正しいリンクは次のとおりです。http://docs.marklogic.com/guide/search-dev/query-options#id_58295カスタムスニペットは、クエリを抽出してドキュメントを変換するより効率的です。 – ehennum

2

オプションを読む必要がない方法が見つかりました。オプション 'return-query'をtrueに設定すると、検索:クエリノードがsearch:レスポンスに追加されます。このレスポンスは、ドキュメントノードとして変換メソッドに渡されます。私は変換メソッドでこれを直接取得して、ctsで使用することができます:ハイライト: $ query:= cts:query($レスポンス/検索:レスポンス/検索:クエリ/ * [1])

関連する問題