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?
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:
positivi:
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).
La mia opinione personale è che dovresti fornire all'utente un modo per affinare la ricerca, perché:
Il modo in cui suggerirei di farlo è in qualche modo simile a quello che Chris ha suggerito.
Tratto da DeepDyve :
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.
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.
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:
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 :)
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.