web-dev-qa-db-ja.com

オートコンプリート検索入力の最小文字数

オートコンプリート機能を備えたレストランの検索入力を作成しているところです。提案された結果を返す前に、最小限の文字数を要求するのが最善かどうか疑問に思いました。私が尋ねる主な理由の1つは、ユーザーが文字aを入力した場合、ユーザーは最大たとえば、その特定の文字で始まるレストランの結果が10件あるとします。これに取り組む最善の方法は何でしょうか?

6
Carl Edwards

提案された結果を返す前に、最小限の文字数を要求するのが最善かどうか疑問に思っていました。

いいえ、待ってはいけませんstrangeの正しいスペルや変わった名前がわからないことがよくあり、2番目の文字でさえビートである可能性があります。次の2つの状況のいずれかを想像してください。

  • お気に入りのフレンチレストランLe Taureauでディナーを食べたい。あなたはその名前のsoundを覚えていますが、2番目の文字です a または o または u
  • あなたの新しいガールフレンドはロシア料理に夢中で、お気に入りのレストランはBullalasТелецと名付けられていると彼女は言いました。彼女はつづりも作って、それからあなたはタイプし始めます T その後 e。おっと2番目の文字はラテン語ではありません e ロシア語 е (Ye)。一致するものはありません。

これに取り組む最善の方法は何でしょうか?

技術的に可能な場合は、それらを注文する必要があります。ユーザーの場所を取得できれば、距離で並べ替えることができます。それ以外の場合は、ユーザーの好み/履歴で並べ替えることができます(エスニック料理が好きですか、アジア料理が好きですか?)。

正しい結果が得られない場合でも、ユーザーは パーソナライズされたエクスペリエンス を持っていると感じます。


typeaheadsearch resultsは異なるものであることを忘れないでください。検索結果には、typedで始まるレストランだけが含まれるべきではありませんWord以外のすべての単語に含まれるその単語( サブストリング検索vs開始文字検索 も参照)。 2番目のケース(ロシア料理レストラン)を適切に処理するには、何らかの正規化も実行する必要があります。少なくともtypeageadにない場合は、検索結果で How文字ごとにUnicode対応の文字を実行できますか? (たぶん)面白い技術的詳細について。

2
Adriano Repetti

それを待つ ...

他の答えは正しい方向を示していますが、重要なポイントを省略していますTime。システムが思考の速度よりも速いことができるからといって、それがそうであるとは限りません。

非常にパフォーマンスの高いシステムでは(すべてではないはずですが)、一見一瞬であるような提案を返すことができます。しかし、一文字の提案はしばしば気を散らすだけであると仮定するのは正しいことです。

最初の提案を返す前に少し遅れてプログラムする場合(私は600ms前後でテストを開始したい)、ほとんどのユーザーは何も戻らないうちに2番目または3番目の文字に移動します。平均的なユーザーの一連の思考を妨害することを避けます(平均は、複数のキャラクターを念頭に置いたものです)。

ランダムな提案で本当に爆破したい人のために、彼らは単一の文字を入力してから一時停止します。彼らが提案を予想している間のわずかな精神的な遅れは、あなたのプログラムされた遅れと一致するはずであり、すべてがうまくいくでしょう。

4
plainclothes

最初の文字、imoから始めます。これから何が期待できるかをすぐにユーザーに示す必要があります。

次のように考えてください。何かの名前を入力したいのですが、フォームを見て、キーストローク(1つまたは2つ)を入力してから、スペルを入力できないことに気付きました...今は調べていません。 。

最初のキーストロークに対する即時のフィードバックははるかに優れています。あなたが言ったように、あなたは間違いなく結果のリストを制限するべきです。

1
user75800