1

Webkit をターゲットとするモバイル Web アプリケーションを構築しています。~5000 ユーザーのデータベースに対して (キーを押して) ライブ検索を実行する必要があります。

私はさまざまなテクニックを試しました:

  1. ページの読み込み時に、5000 人のユーザーすべてのメモリ内表現を読み込む AJAX 呼び出しを行い、クライアントでクエリを実行します。大きすぎることが判明した JSON と、split() を使用して解析されたカスタム区切り文字列も送信してみました。これは改善されましたが、最終的には、この一連のユーザーに対する検索が遅くなりました。
  2. カスタム区切り文字列技術を使用して、クエリに基づいてユーザーを返す従来の AJAX 呼び出しを使用してみました。このほうが良かったのですが、検索が最小 3 文字でのみ実行されるように調整する必要がありました。1文字後にフィルタリングを開始できるようにしたいので、これは最適ではありません。特定のしきい値内のすべてのキーストロークが要求をトリガーしないように、呼び出しを調整することもできます。これはパフォーマンスに役立つ可能性がありますが、そのようなことをいじる必要はありません。

友達検索を試してみると、Facebookモバイルはこれを非常にうまくやっています。検索は瞬時に行われ、1 文字後にトリガーされます。

私の質問は、モバイル アプリのライブ検索を高速化するための提案があれば教えてください。localStorage を見る必要がありますか? これは信頼できる、実現可能ですか?

4

1 に答える 1

0

バイナリ検索を使用できない理由はありますか? 探している名前はブロック内にある必要があります。姓と名の検索が必要な場合は、姓で並べ替えられたデータの 2 つ目のコピーを作成し、両方のセットを調べることができます。

この種の問題に対処するために役立つが、より複雑なデータ構造には次のものがあります。

http://en.wikipedia.org/wiki/Directed_acyclic_word_graph http://en.wikipedia.org/wiki/Trie

于 2011-08-31T04:36:26.587 に答える