2

エンド ユーザーが情報を入力するときにオートコンプリート/提案を使用する Web アプリを構築しています。これは、特に国、州、都市の情報を入力するためのものです。

キーストロークごとにデータベースでワイルド カード検索を実行します。

SELECT CityName 
FROM City
WHERE CityName LIKE '%@CityName%'

指定された州のすべての都市のリストをクライアントに返し、クライアントにマッチングを行わせます。

SELECT CityName 
FROM City
WHERE ProvinceID = @ProvinceID

これらは、Web サービスへの ajax 呼び出しを介して JSON 文字列としてクライアントに返されます。私の考えでは、データベースがワイルドカード検索を実行できるよりも、javascript が JSON を介して 100 以上のエントリのリストを高速に処理できると思いますが、コミュニティの入力が必要です。

4

3 に答える 3

3

過去に、私は両方の手法を使用しました。100 程度のエントリについて話している場合で、各エントリが非常に小さいと仮定すると、クライアント側でオートコンプリート フィルターを実行する方が高速になる可能性があります。これにより、応答時間が短縮され (おそらく無視できる程度)、サーバーの負荷が軽減されます。

Google は実際にユーザーが入力している間にライブ検索を行っており、ユーザーの観点からはかなり反応が良いようです。これは、データセットが大きすぎてクライアントに転送できないため、サーバー側でクエリを実行する必要がある例です。

ユーザーがキーストロークを 2 回入力するまで待ってからサーバーからリストを取得し、最初に結果を絞り込むことができます。もちろん、これにより複雑さが増します。ユーザーが最初の 2 つのキーストロークのいずれかを変更した場合は、リストを更新する必要があります。

于 2012-09-27T20:40:07.180 に答える
2

ajaxオートコンプリートコントロールを使用して同じ機能を実装しました サーバーからリストを取得する前に、ユーザーが3回のキーストロークを入力するのを待ちます クライアント側でコーディングを行っていません リストを返すWebサービスメソッドをajaxコントロールに割り当て、その動作を開始します

于 2012-09-29T21:43:45.677 に答える
1

エンド ユーザーの利益のために、このクライアント側を処理する方が常に優れています。

Telerik Autocomplete コントローラーでは、両方の方法が可能です。

もちろん、クライアント側のオートコンプリートの負荷がかかると、アプリケーションがクロールされる可能性があります。

于 2012-09-27T20:44:32.907 に答える