marklogic の検索機能を使用して検索ページを作成します。現時点では、XQuery を実行して検索結果を取得していますsearch:search
。必要最小限の例として、次のコードを参照してください。
xquery version "1.0-ml";
import module namespace search = "http://marklogic.com/appservices/search"
at "/MarkLogic/appservices/search/search.xqy";
search:search('test',
<options xmlns='http://marklogic.com/appservices/search'></options>)
この検索では、データベース内のすべてのコンテンツが検索されますが、多くの場合は問題ありません。それ以外の場合は、コレクションに基づいて検索しcts:collection-query
ます。コレクションは、検索の優れたコンテキストとして機能します。
ここで、「メイン」ドキュメント内のデータの関係に基づいて検索結果を制限したいと考えています。この「メイン」ドキュメントには、オブジェクト モデル内のすべての関係が含まれています。そのオブジェクト モデルがドキュメントへの参照を持っている場合、そのドキュメントを検索に含めたいと思います。基本的に、「メイン」/モデル ドキュメントは検索のコンテキストです。
私はこれを実現するための最良の方法についていくつかのアイデアをブレインストーミングしようとしていました. これが私がこれまでに思いついたことですが、Marklogicに精通している人(私は6か月しか使っていません)が私を良い方向に導いてくれることを望んでいました:
- モデル ドキュメントで参照されているすべてのドキュメントを一意のコレクションに追加します。次に、そのコレクションに基づいて検索をクエリします。ただし、モデルが変更されると、コレクションを更新する必要があります。
- モデル ドキュメントをコードにロードし、すべての参照のリストを取得して、
cts:document-query
(または同様の方法で) クエリに追加します。 - XML 文書で「モデル」の概念を何らかの方法で再構築します。
ご意見やご提案をありがとうございます。