1

可能性の重複:
How to detect a pause in input for UISearchBar/UITextField?UISearchBarで入力すると最適な検索方法ですか?

私はUISearchDisplayControllerを持っています。現在、私はウェブサーバーに文字列を送信しており、一連の結果を返して返します。私は「タイプして検索する」ことができます。

これを行う推奨方法は何ですか?サーバーのキャラクターをヒットして結果を返すべきですか?それは高価なようだ。

EDIT:

各文字は結果の完全なセットを返します。単一の結果だけではありません。

+0

この質問はあなたを正しい道に導くのに役立ちます。ユーザーからの一時停止の数秒後にサーバーを起動します(おそらくgoogleなどの仕組み)http://stackoverflow.com/questions/7061377/how-to-detect-a-pause-in-put-for-uisearchbar -uitextfield/ – RSully

答えて

0

これは、ほとんどのアプリケーションがそれを行う方法とほぼ同じです。

パフォーマンスに関する懸念事項に答える最良の方法は、ベンチマークを行うことです。調整を行うことができます(例: 3文字以上入力するまで検索を開始せず、2文字ごとにチェックするなどしてください。あなたが扱っているデータによっては、キャッシングもオプションになる可能性があります。あるいは、データが十分に小さく、デバイス上でフィルタリングを行う場合は、検索を行う前に完全なデータセットをプルダウンする方がいいでしょう。

0

高価です。しかしそれは唯一の方法です。コストを下げることに興味がある場合は、(1)キャッシング、(2)キーストロークとリクエストの間に小さな遅延を追加する、(3) "recents"、 "favorites"などの関連するクライアント側のデータを最初に取得する"、 等々。

+0

各キーストローク後にどのように遅延を追加できますか? –

+0

ああ、ライアン・サリバンが私を殴った。 – john

0

サーバーにすべての結果のリスト全体を最初の文字で返すことができますか?もしそうでなければ、あなたはサーバーを何度も叩く必要があります。あなたがサーバーにヒットしたら、リストの残りの部分を返し、それを返し、アプリケーションが残りの部分を処理できるようになるまで、それは少し助けになります。

+0

サーバーは文字ごとの結果の完全なリストを返します。どんな勧告? –

+0

結果がすべて得られたら、それを保管して、サーバーの代わりに検索を開始してください。明らかに、検索ルーチンを書き直す必要があります。それを行う時間がなければ、もはや実行可能ではないと思われるまで、サーバを叩いてください。 –

0

もちろん高すぎます。 リスト全体をクライアントにダウンロード... 次にリストを検索します。

+1

「リスト」が本当に大きくなったら、これはあまり実用的ではありません。良い検索の実装はそのクエリの "トップ"結果を返します。したがって、 'A'を検索すると、 'A'という文字で始まる10,000件以上の回答をすべて表示したくない場合、20このように、ユーザがクエリに多くの文字を追加すると、検索結果が絞り込まれ、クエリが実行されるたびに「リスト」全体を送信することによってサーバおよび/またはクライアントに大きな負担がかからない。 – john

関連する問題