2010-03-17 10 views
12

Nella nostra applicazione c'è un elenco di clienti e un elenco di parole chiave (tra le altre cose). Ogni cliente può avere un numero di parole chiave, ma non è obbligatorio. Quindi, ad esempio, un cliente può avere le parole chiave "retail" e "chain", si può avere solo "contractor" e un terzo non può averne affatto.Come consentire ad un utente medio di disegnare graficamente un'espressione booleana

voglio per permettere all'utente di effettuare una selezione di clienti sulla base di queste parole chiave, ma non dover scrivere (retail AND chain) or contractor and not wholesale

vorrei renderlo il più user-friendly possibile, e idealmente con solo "semplice" controlli, come caselle di controllo, caselle combinate, ecc.

Qualcuno ha qualche suggerimento su come progettare questo? O forse alcuni esempi di applicazioni in cui esiste una funzionalità simile?

risposta

11

Forse la più semplice interfaccia utente sarebbe qualcosa di simile:

Find customers with 

All of these   Any of these   None of these 
[] retail    [] retail    [] retail 
[] chain    [] chain    [] chain 
[] contractor   [] contractor   [] contractor 
[] wholesale   [] wholesale   [] wholesale 
+0

Brillante e semplice. Limiterà gli "utenti esperti", dato che non possono costruire espressioni complesse, ma per il 99% degli utenti questo sarà sufficiente. Grazie :-) –

+1

Dovresti aggiungere un pulsante '{usa la query avanzata}' in basso. –

+1

Per tenere conto del 99% dei casi, scommetto che puoi semplificarlo ancora di più e avere un unico elenco di valori e un menu a discesa per un operatore (Tutto, Qualsiasi, Nessuno). Penso che molto raramente gli utenti abbiano bisogno di più di un operatore per lo stesso campo/attributo (ad es., Tutti questi valori O Uno qualsiasi di questi valori). Si perde un po 'di flessibilità ma si evitano errori logici come lo stesso valore selezionato in Any e Not. –

0

database MS Access ha un wizard per fare segnalazioni. L'utente è guidato a costruire una query SQL in modo intuitivo. TOAD ha una procedura guidata per filtrare anche le query.

Spero che ti aiuti.

1

Forse potresti utilizzare la modalità di ricerca avanzata di Google per specificare la ricerca. Con un po 'di fortuna, gli utenti avranno familiarità con questo.

5

Gli utenti finali hanno serie difficoltà con le costruzioni booleane complesse. Ci sono stati un certo numero di studi su questo (E è abbastanza facile per loro capire, ma OR è difficile). Fornisci ai tuoi utenti finali l'accesso a un generatore di espressioni booleane di uso generale e stai saltando in una tana del coniglio senza fine.

  • La soluzione di JacobM è una bella semplificazione.
  • Un sistema che ho usato in passato è avere il raffinamento di ricerca : consentire solo una o due decisioni per la prima ricerca, quindi consentire agli utenti finali di ridurre i risultati con una serie di decisioni singole ("mostra solo appaltatori", "non al dettaglio", ecc.) Per far sì che funzioni bene, di solito hai bisogno di un modo semplice per mantenere le ricerche recenti, tramite un elenco di finestre a schede o altro.
  • Pensa attentamente ai tuoi utenti finali. Hanno davvero bisogno di un generatore di ricerca booleano completo? Quali sono i dati reali che vogliono? L'accesso a quei dati richiede ricerche non più complesse di alcuni limiti arbitrari? In tal caso, progetta la tua interfaccia utente per supportare fino a quel limite. La soluzione di JacobM ne è un esempio in una certa misura.
+0

Punto 1) Sono d'accordo :-) Punto 2) È un modo semplice e intuitivo per farlo, ma richiede di passare attraverso l'elenco dopo ogni iterazione. Troppo tempo, in questo caso. Punto 3) Hai assolutamente ragione. I miei utenti non hanno bisogno di fare espressioni complesse. Probabilmente andrò con la soluzione di JacobM. È abbastanza flessibile, almeno per i miei bisogni attuali. –

2

Per più potenza e flessibilità di quanto si possa ottenere con un elenco fisso di campi, c'è query-by-example, un approccio consolidato che consente la costruzione di espressioni booleane complicate.

Per veramente graficamente modi per specificare un numero illimitato di espressioni booleane arbitrarie, non siete una coppia che utilizzano metafore percorso:

Mentre meglio di stile SQL espressioni booleane, tutti questi sono relativamente complesse interfacce utente, probabile che richiede almeno una certa pratica per usare bene. Pertanto, qualsiasi tale capacità di interrogazione ad hoc dovrebbe probabilmente essere isolata come una funzionalità "avanzata". Nella maggior parte delle applicazioni, gli utenti hanno alcuni tipi molto specifici di query che rappresentano la maggior parte del loro lavoro (ad es. Account con arretrati per più di n giorni). Una semplice finestra di dialogo per selezionare query in scatola o semi-inscatolate è la migliore per questo e dovrebbe essere l'interfaccia utente predefinita.

Problemi correlati