it-swarm-ja.com

検索ボックスUI-「すべての単語」、「部分一致」、「完全一致」

デスクトップアプリケーション(退屈な会計関連)を設計していて、「検索製品」機能を持っています。

素敵ですがシンプルな「スマート」検索ボックスが欲しいのですが。現在、検索ボックスは、指定されたすべての単語を分割し、それらのanyに部分的に一致するすべてのレコードを検索することで機能します。

ここで私は次のジレンマに直面しています。ユーザーが指定した単語anyまたはallに一致するかどうかを指定する方法を提供したいのです。良いアプローチは何でしょうか?

別の問題はたぶんユーザーが完全一致を実行したいということです。繰り返しますが、アプリを使いやすくしたいと思います。

現時点ではフォームに3つのラジオボタンを投げただけですが、内部が汚れています...意見はありますか?

21

グーグルはこれをずっと前に解決しました-車輪を再発明する無駄はありません。 ;)

選択する必要をなくし、3つの検索を同時に実行することをお勧めします: "正確なフレーズ" "すべての単語に一致"、および "すべてに一致"次に、それらの結果をその順序で結合(SQL "ユニオン")し、ユーザーに提示します。

欠点

  • データベースの負荷が増加します。

ポジティブ

  • ユーザーにとってより自然:誰かが複数の単語を入力した場合、おそらく彼らは探しているものを知っています。彼らは暗闇の中で撃っていない
  • 検索エンジンでの経験と一致
  • インタラクションのワンクリックを節約します=時間を節約します。

検索フレーズからノイズワードを削除し、ケース/活用などを正規化してください。これは、ユーザーが検索語を間違った大文字/小文字/時制/間違った記事で入力した場合でも、ユーザーが必要とする結果を見つけるのに役立ちます。

また、検索がキーボードのみで機能することを確認してください(つまり、ユーザーがマウスを使用する必要はありません。<search phrase> <Enter>は、結果を取得するのに十分なはずです)。

26
Erion

私の個人的な意見では、ユーザーが検索を絞り込む方法を提供する必要があります。

  1. あなたはそれをあなたの目標(「私は本当にしたい...」)として述べ、どのような自動アプローチをとっても、ユーザーが選択することを許可しません。
  2. Gmail(これはアプリケーションです。Web検索よりも独自のアプリケーションに似ています)では、検索オプションを表示および調整できます。
  3. 通常のGoogle検索でも、ユーザーは結果を手動で絞り込むことができます。つまり、検索文字列が引用符で囲まれている場合、全体として検索されます。
  4. 経験豊富なユーザーとして、自分の基準を知っていて、私のために自動的に決定し、知らないアルゴリズムに従って結果をシャッフルすることは、本当に私にはうまくいきません。

私が提案する方法は、Chrisの提案と多少似ています。

DeepDyve から取得: alt text

「絞り込み」を押すと、すぐにドロップリストを開くか、将来さらに検索オプションを追加する場合は小さなダイアログを使用することもできます。

5
Dan Barak

スペースが主な関心事である場合、ドロップダウンの使用を考えましたか? (より多くのクリックを必要とするため)おそらく素晴らしいソリューションではないかもしれませんが、ラジオボタンのセットよりも場所を取りません。

現在のオプションは、他の選択を可能にするためにエキスパンダーと共に表示されます。

       +-----------------+---+ +---------------------+ +----+
Search | exact phrase    | V | |                     | | Go |
       +-----------------+---+ +---------------------+ +----+
       | all words           |
       | any words           |
       | exact phrase        |
       +---------------------+

(悪いアスキーアートの言い訳)

ユーザーがクリックするのではなく、マウスをエキスパンダーの上に置いたときにドロップダウンを実行するように改良することもできますが、これも理想的なソリューションではありません。

4
ChrisF

私は検索オプションを殺します-それはユーザーの考え方ではないと思いますが、UIマントラが進むにつれて、実際のユーザーでそれをテストし、彼らがどう思うかを見てください。

通常、検索エンジンは次のように優先順位を付けます。

  1. すべてを試してみてください(AND)
  2. 個々の単語の存在を一緒にしてみてください
  3. 単語の断片を試してみてください(語幹-「キック」と入力すると、「キック」にも一致します)
2
Julian H

Erionに間違いなく同意します。ユーザーにそのようなことを選択させる必要はありません。検索エンジン(それが何であれ)に代わって実行してください。

バックエンドで検索に使用しているテクノロジーに関係なく、必要な基準に従って(つまり、Googleと同じように)結果に優先順位を付ける方法があります。この種のものについては、他のものよりも設定が難しいものもありますが、基本的なSQL Serverのフルテキストインデックス処理でも、このレベルの検索結果の整理を提供できます。

最高のユーザーエクスペリエンスを決定し、エンジニア(または必要に応じて開発者)が機能するようにしてください。それが彼らの目的です。私もエンジニアなので、そう言うことができます:)

1
Charles Boyung

興味がある場合は、全文検索エンジンがTD-IDFスコアリングを使用することで最も一般的に機能します。これは Term Frequency-Inverse Document Frequency を表します。要点は、検索用語が非常に頻繁に出現する場合、ドキュメントはより関連性が高いということです。これは、Wordが全体として出現するドキュメントの数によって割り引かれます。

0
CambridgeMike