2

人の名前に基づいて、テキスト フィールドの下に提案/オートコンプリートの結果を表示する必要があるという問題に直面しています。全員をリストにロードし、起動時にコレクションとして並べ替える必要がありますか?それとも、データベースで名前でインデックスを作成し、その人の名前が特定の文字列で始まる行のみを選択することはできますか?

もちろん、潜在的に巨大なリストをメモリに保持する必要はありません。そのため、ここで SQL を使用する方法を誰かが提案できれば、それは素晴らしいことです。

4

6 に答える 6

3

DB 内のテーブルのクエリ: 毎回 db 呼び出しを行う場合、これは比較的遅くなります。

中間層への保存: これは db 呼び出しよりも高速です。ただし、ここでも複数のアプローチを使用できます。

1) DB からデータをフェッチして保存します
。2) キャッシュを事前に設定してから、キャッシュにクエリを実行します。

クライアント側への保存: データ/名前を js ファイルに保存し、js ライブラリを使用して効率的に検索を実行します。このjsライブラリを試してみたところ、かなり良いことがわかりましたWICK: Web Input Completion Kit
また、html 5 はローカル ストレージをサポートするようになったので、これも評価できます。

したがって、すべてのオプションを評価してから、必要なものを 1 つ見つける必要があります。

于 2012-12-26T09:43:46.513 に答える
3

すべてをコレクションに入れると、名前全体のオーバーヘッドになると思います

アプローチ

  1. ユーザーが最初の文字を入力すると、DB にアクセスできます。ソートされた一意の値のために、データをコレクションに入れます(ツリーセットが推奨されます)。
  2. その後、いくつかのJavaロジックを使用してコレクション内のデータをフィルタリングします
  3. ユーザーが最初の文字を削除すると、DB ヒット後に新しいセットでコレクションをリロードします
于 2012-12-26T09:42:39.663 に答える
1

ユーザーの完全なリストである AJAX 関数を提供しますname like 'input%' to DB

onkeyPress()入力フィールドでこの関数イベントを呼び出します

于 2012-12-26T09:47:47.237 に答える
0

を使用することをお勧めjQueryします。これは、フィールドに入力するときに提案を提供するのに役立ちます。これがデモです

データソースは、source-optionの単純なURLを介して指定されたJSONデータを返すサーバーサイドスクリプトになります。さらに、minLength-optionを2に設定して、返される結果が多すぎるクエリを回避し、select-eventを使用してフィードバックを表示します。

于 2012-12-26T09:54:42.163 に答える
0

検索のようなオプションが必要な場合は、クエリのようなものを使用SELECT * FROM TABLE_NAME WHERE NAME LIKE %manu% してテーブルに表示できます

于 2012-12-26T09:55:50.823 に答える
0

オートコンプリートは、ユーザーが入力した文字に基づいて結果を検索することを目的としています。このクエリを使用して、パターンに一致する行を取得するだけです。

   SELECT uname FROM table WHERE uname like 'cha%';

ここchaにユーザーからの入力があります。

オートコンプリートは取得します

  chaten
  chaitanya
  charles
于 2012-12-26T09:37:52.783 に答える