web-dev-qa-db-ja.com

一致するレコードを見つけるための効率的なマルチフィールド検索パターン

人々からのデータ入力が外部データソースからのトランザクションを見つけてそれらを私たちのトランザクションと照合できるようにするツールを構築する必要があります。トランザクションは常に特定のフィールドで整列するとは限らないため、複数のフィールドを検索する必要がある場合があります。現在、2つのデザインがありますが、他のより良いオプションをいただければ幸いです。

どちらも検索可能なテーブルです。

最初のデザインは、一致する用語のすべてのフィールドを検索し、その用語を含むすべての行を返すユニバーサル検索を備えたテーブルです。ユーザーは、特定の行で昇順または降順で並べ替えることにより、さらにフィルターをかけることができます。

2番目の設計は、ユーザーが「車」を検索して、フィールド「タイプ」が「車」であるレコードを検索し、「名前」「カルロス」を含む結果を受け取るシナリオからのものです。ここでの解決策は、ユーザーが任意のヘッダーをクリックして検索用語を入力できるようにすることでした。これにより、タグが作成され、その列でその特定の用語に対して検索が実行され、他の列に追加された用語に対して追加のフィルタリングが行われます。それらのそれぞれの列に。

2番目のアプローチに対する反論は、ユーザーがよりきめ細かく制御できるため理論的にはより効率的ですが、ユーザーが入力する必要があるフィールドについて最初に考える必要があるユーザーの認知的負荷のため、実際にはより効率的ではないということです。検索語をオンにしてからフィールドを探します(10列あり、画面上にスペースがないためにデフォルトでは表示されないため、非表示にする必要があるものもあります)、次のフィールドについて考え、そのフィールドを探します。ユーザーは1日に数十件のトランザクションを見つける必要があり、筋肉の記憶に頼って常に普遍的な検索に行くよりも早く精神的に疲れます。

最適なソリューションは何でしょうか、おそらくそれは考慮されていないいくつかのオプションですか?

3
user2522280

一般的な検索フィールドを保持し、その横にあるすべての列をリストするドロップダウンメニューを追加します。デフォルトでは、ドロップダウンは「すべての列」に設定されます。

ユーザーが検索を絞り込む必要がある場合は、ドロップダウンから1つまたは複数の列を選択できます。

1
celinelenoble

これは非常に特殊なケースであり、ユーザーはほとんどのテーブルを名前で知っています。したがって、フィルタリング時にGmailが行うような、より高度なクエリシステムを作成できます。

たとえば、次のように入力します。

type:car

次に、タイプ内のすべての「car」オカレンスを検索します。

ユーザーの技術レベルに応じて、これを次のように拡張できます。

car in type, vehicle, transport

car avanを列のタイプ、車両、または輸送のどこかに見つけるために、car *を提供することもできます。

あなたはこれでかなり遠くまで行くことができますが、特別なことのない車のデフォルトの検索が機能し続けることを確認してください。

また、ユーザーが自分のクエリを有効であると確認しなければならないという追加の難易度のレイヤーを作成しないようにしてください。全員がスペースに続くコロンを挿入するわけではありません。入力を検証してコロンを忘れた場合は、彼にヒントを与えるようにしてください。いいえ、列車両を使用しています。はい、列輸送を使用しています。

(SQLを知らないユーザー向けに)素晴らしさを追加して、次のように入力します。

car in type, vehicle, transport by speed

速度順に並べられた結果を表示します。しかし、それはあなたの場合にはやり過ぎかもしれません。コストに対して値を評価してください。

0
Yakke

これは、あなたが言及したさまざまなシナリオでユーザーをサポートするはずです

enter image description here

  1. オートコンプリートを提供します
  2. (あなたのケースタイプで)関連するカテゴリを提案します
  3. ユーザーは強制的に使用しないため、必要に応じて単純な検索を使用できます。
0
UX Labs