it-swarm-eu.dev

Interfaccia utente della casella di ricerca: "tutte le parole", "corrispondenza parziale", "frase esatta"

Sto progettando un'applicazione desktop (roba di contabilità noiosa) e ho una funzione di "prodotto di ricerca".

Voglio avere una casella di ricerca "intelligente" bella ma semplice. Attualmente, la casella di ricerca funziona suddividendo tutte le parole specificate e cercando tutti i record che corrispondono in parte a qualsiasi di essi.

Ora sono di fronte al seguente dilemma: voglio davvero fornire un modo per specificare se l'utente desidera abbinare qualsiasi o tutto le parole specificate. Quale sarebbe un buon approccio?

Un altro problema è che forse un utente vuole eseguire una corrispondenza esatta. Ancora una volta, voglio che l'app sia semplice da usare.

Al momento ho appena lanciato tre pulsanti di opzione sul modulo, ma mi sento sporco dentro ... qualche opinione?

21
Leonardo Herrera

Google ha risolto questo problema molto tempo fa: inutile reinventare la ruota. ;)

Ti suggerirei di rimuovere la necessità di scegliere e di eseguire tre ricerche contemporaneamente: "frase esatta" , "trova tutte le parole" , AND "trova qualsiasi" . Quindi unire ("unione" SQL) i risultati in quell'ordine e presentarli all'utente.

Inconvenienti:

  • più carico sul tuo database.

positivi:

  • più naturale per l'utente: se qualcuno inserisce più parole, molto probabilmente sa cosa sta cercando; non stanno sparando nel buio cercando di ottenere almeno una Parola giusta
  • corrisponde all'esperienza sui motori di ricerca
  • consente di risparmiare un clic nell'interazione = consente di risparmiare tempo.

Assicurati di rimuovere le parole non significative dalla frase di ricerca e normalizzare casi/coniugazioni, ecc .; aiuterà a trovare i risultati di cui i tuoi utenti hanno bisogno, anche se digitano le parole di ricerca nel caso sbagliato/teso/con l'articolo sbagliato.

Assicurati inoltre che la ricerca funzioni solo con la tastiera (ovvero senza forzare l'utente a utilizzare il mouse. <search phrase> <Enter> dovrebbe essere sufficiente per ottenere risultati).

26
Erion

La mia opinione personale è che dovresti fornire all'utente un modo per affinare la ricerca, perché:

  1. Lo hai dichiarato come il tuo obiettivo ("Voglio davvero ...") e indipendentemente dall'approccio automatico che segui, non permetti all'utente di scegliere.
  2. Gmail (che è un'applicazione, più simile alla tua stessa applicazione della ricerca web) ti consente di mostrare e perfezionare le opzioni di ricerca.
  3. Anche la normale ricerca su Google consente all'utente di perfezionare i risultati manualmente, ovvero se la stringa di ricerca è tra virgolette, la cercherà nel suo insieme.
  4. Come utente esperto, se conosco i miei criteri, prendere decisioni automatiche per me e mescolare i miei risultati secondo un algoritmo che non conosco, funziona davvero contro di me.

Il modo in cui suggerirei di farlo è in qualche modo simile a quello che Chris ha suggerito.

Tratto da DeepDyvealt text

Dopo aver premuto il tasto "perfeziona", puoi aprire immediatamente un elenco a discesa o persino utilizzare una piccola finestra di dialogo se in futuro intendi aggiungere altre opzioni di ricerca.

5
Dan Barak

Se lo spazio è la preoccupazione principale hai pensato di utilizzare un menu a discesa? Anche se forse non è una soluzione geniale (in quanto richiede più clic), occuperebbe meno spazio di una serie di pulsanti di opzione.

L'opzione corrente verrebbe visualizzata con l'espansore per consentire le altre scelte.

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

(scusa la cattiva arte ascii)

Un perfezionamento potrebbe essere quello di eseguire il menu a discesa quando il mouse passa sopra l'espansore piuttosto che l'utente debba fare clic, ma di nuovo non è una soluzione ideale.

4
ChrisF

Ucciderei le opzioni di ricerca - non penso sia come pensano i tuoi utenti, ma, man mano che il mantra dell'interfaccia utente va, lo testerei con utenti reali e vedo cosa ne pensano.

Di solito i motori di ricerca danno la priorità in questo modo:

  1. Prova a trovare il tutto (l'AND)
  2. Prova a trovare la presenza di singole parole insieme
  3. Prova a trovare frammenti di parole (gambi - digiti 'kicking' corrisponde anche a 'kick')
2
Julian H

Sicuramente d'accordo con Erion - non è necessario che l'utente scelga quel genere di cose - chiedi al tuo motore di ricerca (qualunque esso sia) di farlo per te.

Indipendentemente dalla tecnologia utilizzata dal tuo back-end per la ricerca, ci sono modi per dare la priorità ai risultati in base a qualsiasi criterio tu voglia (cioè proprio come fa Google). Alcuni possono essere più difficili da configurare di altri per questo tipo di cose, ma anche un semplice indicizzazione full-text di SQL Server può fornire questo livello di organizzazione dei risultati di ricerca.

Prendi semplicemente la decisione per la migliore esperienza utente e chiedi ai tuoi ingegneri (o sviluppatori, se necessario) di farlo funzionare. Ecco a cosa servono. Dato che anch'io sono un ingegnere, posso dire che :)

1
Charles Boyung

Se sei curioso, i motori di ricerca full-text funzionano più comunemente usando il punteggio TD-IDF. Questo sta per Termine Frequenza inversa documento . La sostanza è che un documento è più rilevante se il termine di ricerca appare in esso molto frequentemente, questo è scontato dal numero di documenti che la Parola appare in generale.

0
CambridgeMike