2016-05-31 24 views
0

MarkLogicからドキュメントを挿入する時間に基づいてドキュメントを取得する方法を見つけようとしています。挿入時間に基づいてMarkLogicからドキュメントを取得するには

私が知っていることは、xdmp:document-timestampを使用して文書のタイムスタンプをチェックしていますが、このタイムスタンプは最近の文書の更新によって異なります。マークロジックはドキュメントの挿入タイムスタンプを維持していますか?はいの場合はどうすれば使えますか?

現在、私はfn:doc()[last()-10 to last()]の述語を使用して、最近挿入されたドキュメントを取得しています。しかし、私は、特定のタイムスタンプの間にドキュメントを取得するより動的な方法が必要です。

答えて

1

MarkLogicは自動的にそれを行いません(二重引用符またはDLSの場合は?)。

さらに、URIを挿入順に使用することはできません。

あなたがコンテンツ処理フレームワーク(CPF)の一部のように聞こえると思うもの。 CPFは、いくつかの有益な情報をプロパティー・フラグメントに保管します。これで十分でない場合、タイムスタンプの挿入や更新などのパイプラインのサンプルがあります。

または独自のコードまたはトリガーによって、この情報が最適な方法で格納されます。このためにCPFを使用する必要はなく、唯一のユースケースである場合、オーバーヘッドがあるため、CPFはいくつかの状況では少し過剰すぎる可能性があります。トリガまたは独自のコードが同じ結果に影響を与える可能性があります。あなたが保管する場所はあなた次第です。プロパティをまだ使用しておらず、ドキュメント(ヘッダーセクションまたはラッパー)に便利な場所がある場合は、プロパティーフラグメントではなくいくつかの理由でそこに保管してください。次に、バイナリコンテンツを持っている場合は、プロパティを使用することもオプションです。

+0

合意すると、追跡するタイムスタンプの要素を挿入するためにアプリケーションレベルのコードが必要になると思います。 –

4

MarkLogicには、最終更新日時を自動的に更新するオプションがあります。以前の日のオプションであり、lastModifiedプロパティをプロパティフラグメントに保存します。しかし、プロパティは別のフラグメントに格納されるため、余分なオーバーヘッドが発生し、ディスク上のフットプリントが大きくなります。可能であれば、ドキュメント自体に要素やプロパティを追加し、それ自身を維持することを検討してください。あなたはインジェストトランスフォームでそれを行うことができます、または(もしあなたがそれが常に存在していることを確かめたいのであれば)プレコミットトリガーで行うことができます。元のコンテンツをこれらの追加と区別して保存したい場合は、封筒のパターンを使用してください。

この要素を取得したら、通常の範囲インデックスを配置して、結果のクエリやソートに使用できます。最新の10個のドキュメントが必要な場合は、降順でソートしてから最初の10個を取得してください。

関連性スコアリングの日付を使用する場合は、あなたの範囲のクエリ。他にも:http://docs.marklogic.com/cts:element-range-query

HTH!

関連する問題