レスポンスライターと cursorMark の組み合わせ

(The bot translated the original post https://lists.apache.org/thread/tl2dxrsccc33tj6fof3ovz5yzrf8jqj9 into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)
大きな結果セットをページングする場合、start/rows によるページネーションよりも cursorMark を使う方が良いことは知っています。なぜなら、cursorMark の方が、ページングの最中にデータが挿入/更新/削除された場合でもうまく動作し、さらにパフォーマンスも良くなる可能性があるからです。
https://solr.apache.org/guide/solr/latest/query-guide/pagination-of-results.html
また、レスポンスライターについても知っています。つまり、もし結果を CSV で取得したければ、wt パラメータを変更するだけで可能です。
https://solr.apache.org/guide/solr/latest/query-guide/response-writers.html
そこで質問です。これらを組み合わせたい場合はどうすればよいでしょうか? つまり、cursorMark を使って、きれいにページ分割された CSV を取得することはできるのでしょうか?
そのようなオプションは見当たりません ― 実際に存在するのでしょうか?
何か良い回避策はありますか?
start/row を使ったページングにして、その問題を受け入れるという方法もあります。しかし、その場合、自分の現在の位置より上で行が挿入/削除/移動されると、データが 1 行分ずれてしまい、それは好ましくありません。
別の方法として、1 ページあたり 2 回のクエリで cursorMark を使うこともできます。例えば:
cursorMarkを、最後に取得したもの、または開始時なら"*"に設定する。- API を 1 回呼び出し、JSON レスポンスライターで結果を取得。
nextCursorMarkの値を記録する。 - API を 2 回目呼び出し、CSV レスポンスライターで結果を取得。それを保存する。
- レート制限を避けるため、1 秒ほど待機することもある。
- もし
nextCursorMarkが前回のものと異なれば、さらに結果があるのでループを続ける。
この方法であれば、現在の位置より上で行が挿入/削除/移動されてもデータがずれることはありません ― 素晴らしいことです。しかし、2 回のクエリの間に、ちょうど自分のページ内で行が挿入/削除/移動されてしまった場合、行を取り逃したり、二重にカウントしてしまう可能性があります。
他にもっと良い方法はあるでしょうか?
よろしくお願いします。
James
トピックへ返信するには、ログインが必要です。