少なくとも1つの列に入力テキストが含まれているエントリをフィルタリングする汎用検索フィールドをテーブルに提供します。また、この検索フィールドに何らかの方法でオートコンプリートを提供することも考えています。明確にするために、filter/auto-complete while(user is)typingのようなものです。
私の質問:フィルタリングメカニズムが動作する前に推奨される最小文字数制限はありますか?
パフォーマンスの問題がない場合単一の文字を検索する場合とにかく最低限あるべきか?または、この問題はパフォーマンスの問題により一般的になった。
これは特定の使用例に依存しますが、フィルタリングを行う前に必要な同意済みの最小文字数はありません。返される結果が多すぎる場合は、初期セットを、できれば最も可能性の高いもの(それが決定できる場合)、または最新のような他のメトリックに制限します。 Chromeを使用している場合は、試してみてください。 URLバーに単一の文字を入力すると、結果が得られます。単一の文字でも良い提案ができるので、そこには意味があります。
私が使用する経験則は、(パフォーマンスに関する考慮事項がない場合)最適な数はユーザーが役立つと思う提案をアルゴリズムが作成するために必要な文字数に依存する。
率直に言って、これは状況に応じたものです。単一のWordの場合、通常、オートコンプリート機能を開始するために最低2〜4文字が保持されます。これには少なくとも2つの理由があります。
1つは、指摘したとおりのパフォーマンスです。結果のデータセットが巨大になることがわかっている場合は、フィルタリング呼び出しを起動する必要はありません。
第二に、ユーザーの認知負荷を軽減するために表示したい結果の数。あなたが提供するオートコンプリート情報は、それまでは単なる注意散漫になるまで、ユーザーに直接役立つはずです。できるからといって、Apple=のAと弾薬のAを同時に提案することはできません。
この認知的負荷を軽減するために、リストを5つの可能性の高い単語に減らし、それらの単語を縦にレイアウトするなどのパラメーターを使用できます。 - Wiki 、元の参照は1985年の論文です。ここにリンクするための資料が見つかりませんでした。
最初の3文字は2つの目的を果たします。結果を管理可能な制限に絞り込むと同時に、重要なことをユーザーに提案します。
そうは言っても、文脈に応じて言うと、共通の文字セットを持つ2つのエントリが多数あるときです。それがビジネスケースである場合、それを考慮に入れる必要があります。
@merqriに追加するメモ answer :フィルター文字列を入力するユーザーが情報(概算になる場合があります)を取得する機能、結果の数を検討することができます。
結果の数が例えばに絞り込まれた場合。 5、2つの文字の後でも表示できます。
MS Excelのオートコンプリート機能を見てください。ユーザーがいるセルの上のセルにテキスト(文字列)があります。ユーザーが入力を開始すると、オートコンプリートがアクティブになりますが、前のエントリと一致する結果が1つだけある場合に限られます。たとえば、月の名前がある場合、F
と入力するとFebruary
と入力するだけで十分ですが、Jun
と入力してJune
を取得する必要があります。 Ju
はJune
とJuly
の両方にあり、J
だけでもJanuary
に有効です。 March
とMay
(最初の2文字が共通)とApril
とAugust
(最初の文字のみ)も同様です。
そのため、その場でのフィルタリングで優れたパフォーマンスを発揮できる場合は、最初の文字のユーザーが入力した後でも、一致を開始することを恐れないでください。彼が正しくタイプしていることは、彼にとっても意味があります。たとえば、ユーザーに通知することができます。 Found ca. 2,500 matches. Type more characters to narrow down search results
。
オートコンプリート/フィルターの正確な結果と不正確な結果との間で違いが生じる必要があります。
同僚は、多くのサイトで自分のプロファイルを探したり使用したりメンションしたりすることはほとんどの場合非常に難しいと不平を言いました。なぜなら、彼が自分の名前を完全に入力すると、オートコンプリートが機能しなくなるからです。彼の名前は李世界中で最も使用されている名前の1つ。
したがって、何かが入力されたら(またはおそらく2文字以上入力されたら)、正確な結果の検索を開始する必要があります。
予想される結果の数が十分に少ない場合は、不正確な検索結果を開始する必要があります。オートコンプリート/フィルターの合計m
の結果からn
の結果を表示する場合は、生の推定値としてm >= log_a(n)
を使用します。ここで、a
は結果で通常使用されるアルファベットのサイズ。