2016-08-19 21 views
1

私は何千人ものユーザーがアクセスしている私たちのウェブサイトを検索しています。私はCloudSearchが超高速で、自分のRDSの負担を軽減するので、CloudSearchが大好きです。私たちは約30,000の文書を持っていますので、結果を改ページするために、カーソルを使用する必要があります。文書は常に更新されています(追加、変更、削除)。この問題は私が今行っているのは、前のカーソルを取得することです。AWS Cloudsearch上の前のカーソルを取得

私の理想的な状況は次のようになり

{前} {...} {3} {4} {5} {6} {7} {...} {次に}

しかし、クエリが実行されるたびにすべてのカーソルを取得できないため、これは非常に難しいことに気付きました。だから、僕は

{前}が{次の}私は、これは現在のカーソルを渡すことでやっている方法

& AJAXスクリプトの隣にカーソルが新しい結果をロードするためにやってと思っています。これは、ユーザーが前進して次のページを取得しているときに完全に機能します。ユーザーが戻ると前のページを取得しているときにブレークします。彼らは1ページ分を現在の(前の)カーソルに戻すことができますが、1ページ以上戻すことはできません。ユーザーの観点から見ればばかげている。

私はカーソルを保存しようとしましたが、新しい文書が入ったり、古い文書が削除されたりすると、これは再び破損します。カーソルが0の結果を返します。新しいカーソルをフェッチする場合は、次のカーソルのみを表示し、前のカーソルは表示しません。

例:

Page 2カーソルがありますか? Page 3カーソルを持っていますか? ページ4(現在のページ)がVWXabc123 ページ5(次ページ)にカーソルを持ってカーソルを持ってVUTdef456

は、そこで問題は、どのように私は、4ページの前に、前のカーソルを得るのですか?結果を保存したり、クエリから取得することはできません。つまり、単純な「前」ボタンと「次へ」ボタンを実行することはできません。

ありがとうございました!

答えて

1

'カーソル'の代わりに 'start'と 'size'パラメータを使用できます。これにより、結果にランダムアクセスすることができます。しかし、CloudSearchはあなたをセット全体で10,000の結果に制限します。

クライアントがカーソルで無限に「戻る」ようにするには、カーソルを追跡する必要があります。あなたが1つのアプリケーションサーバしか持っておらず、クライアントセッションを話して追跡している場合は、アプリケーションサーバにこれらを保存し、prev/nextと/またはpage =#を関連付けることができます。

私たちのアプリには複数のEC2サーバーがあり、そこで追跡できません。しかし、各カーソルが提供するページを移動するときに、カーソルの「スタック」をクライアントに格納させることができます。彼らが戻ってきたら、古いカーソルをスタックから外してそこに行きます。彼らが進むと、新しいカーソルをスタックに追加します。クライアントの角度コードでこれを行います。

関連する問題