リストを検索するとき、検索は検索語で始まる項目を返す必要がありますか、それとも検索語を含む項目を返す必要がありますか?
例
カメラのブランドのリストと検索ボックスが与えられます。 "c"と入力すると、すべての単語で検索結果が返されますstarting"c"または"c"が含まれる単語を検索しますか?
理想的には、ユーザーが"can"と入力したときにリストの上部に"Canon"を表示したいと思います。
"c"を含むすべての単語を使用することで、両方の方法を使用できますが、beginである単語を "c"で先頭に表示します。
ここでは、無関係な2つの問題を混同していると思います。検索とフィルタリングは1つであり、「で始まる」と「次を含む」は別です。
検索とフィルタリングの違いは、基本的にはその場で行うか、ユーザーが明示的にコマンドを実行したときにのみ検索を実行するか(「検索」または「実行」などを押す)です。確かに、グーグルはインスタント検索で物事を少し複雑にしました、そして私はそれをフィルタリングのふりをしている検索と考えます:)あなたの例から判断すると、あなたは本当にフィルタリングについて話しているようです。
「次で始まる」と「次を含む」について:複数のフィールドを一度に検索する場合、または大量のデータセットを検索する場合、またはフィールドに式が含まれ、単一の単語だけではない場合は、 「含む」。
たとえば、アーティスト、ジャンル、アルバム、アーティストのフィールドで何千ものファイルから音楽コレクションを検索していて、「The Wall」を見つけたいとします。 「The」と入力する必要はありません。曲、アルバム、バンドの半分がそれで始まるためです。 「Wall」と入力して、結果が10になる可能性があります。または、ジョンスミスの電話帳を検索しています。 JohnがJohn Smithとしてリストされているか、John Smithとしてリストされているかを覚えておく必要はありません。 「スミス」と入力して彼を見つけたいだけです。
しかし、あなたの例は異なります。柔軟性のないブランド名のセットは非常に少ないので、自分が見つけたいものだけがわかっていて、邪魔になりたいものは何もありません。したがって、Nと入力すると、Nikonが見つかりますが、SonyやMinoltaは見つかりません。
要するに、ごく少数の非常に特殊なケースでのみ、文字レベルで「contains」を使用します。多分、オンライン辞書などの言語環境で。しかし、私は間違いなく特定の単語を含む表現を検索するためにそれを使用します-単語はまだそれらを含むだけでなく、入力する文字で始まる必要があります。
主な目標は、視聴者が探しているものをすばやく見つけることです。自動提案は、これを達成するための唯一の方法です。
ユーザーは正確な製品名を知らない可能性があるため(たとえば、キヤノンのカメラを入手するには「EOS」と入力するなど)、ユーザーが検索ボックスに「入力」したすべての単語を提案することを期待します。より詳細な検索オプションについては、「詳細検索」を提供する必要があります。この場合、顧客は次のようなものを指定できます。正確な表現、除外、開始/終了など。
また、ファセット検索/ナビゲーションパターンを確認してください。
http://www.alistapart.com/articles/design-patterns-faceted-navigation
http://www.webusability.co.uk/2010/faceted-search-current-trends-and-usability/
これを行うには、さまざまな方法があります。ただし、Googleをコピーする場合は、提案されているようなワイルドカード検索は使用しません。 Googleは、洗練されたフルテキストインデックスを使用して、ルートWordの代替バージョンを検索します。これには、速度と精度の両方で利点があります。次に、彼らは本当に「素晴らしい」というメカニズムを持っています。
Googleほど良いものを簡単に再作成することはできません。ただし、フルテキストインデックスは、ほとんどのSQL実装で使用できます。それは 無料のMicrosoft SQL Server Expressに組み込まれています です。この種の機能を提供する Lucene (Apacheで利用可能)などの優れたオープンソースプロジェクトもあります。
全文検索とワイルドカード検索を組み合わせたい場合で、サーバーが負荷を処理できる場合は、それを確実に実行できます。考えは、関連性でソートされた全文検索結果を表示し、その後に追加のワイルドカード検索結果をその末尾に追加することです。これは、自分のサイトの1つで思いついたソリューションです。
EndecaのAuto-suggest設計パターン を見てください:
ユーザーが検索ボックスに入力している間、自動提案により検索用語の提案が提供されます
特に:
最低3文字が入力された後にのみ、自動提案パネルを呼び出します。