Durante la ricerca con il campo di suggerimento basato su Ajax, quante lettere devono essere digitate prima che inizi a suggerire risultati? 1,2,3 ..
Rango secondario
Se hai un altro fattore che può classificare i risultati (ad es. "Popolarità", "rango kuakeli"):
(all'incirca: SELECT TOP 10 FROM Stuff WHERE Name LIKE "x*" ORDER BY Rank
)
Se non hai quel rango, potresti comunque iniziare dopo la prima lettera, ma i risultati non sono altrettanto utili. Tuttavia, non esiste alcun motivo di usabilità per iniziare con un elenco ordinato:
SELECT TOP 10 FROM Stuff WHERE Name LIKE "x*" ORDER BY Name
motivi di prestazione
Ecco alcuni motivi tradizionali per ritardare la query:
Ciò si ottiene in genere avviando la ricerca se non è stato premuto alcun tasto per le ultime centinaia di millisecondi o avviando solo dopo una lunghezza minima della stringa.
È rimasto un caso (che mi viene in mente) in cui iniziare dopo il tasto [~ # ~] n [~ # ~] la chiave potrebbe migliorare l'usabilità: Partite fuorvianti. Se il tuo pool di ricerca contiene elementi come questo:
SDBXXFDR 1722 Lengthy
SDBXXFDR 1723 Still Lengthy
...
SDBXXFDR 1799 Short
SOBXXFDR 1972 Lengthy with ripples
E tu digiti semplicemente "S", i risultati "SD" potrebbero nascondere quello SO uno, la possibilità di scegliere quello sbagliato è piuttosto alta. Tuttavia, quel sems molto costruito, e io sono non sono sicuro che la ricerca incrementale sia una buona soluzione se questo sarebbe un problema.
Una funzionalità di completamento automatico è supportata in modo ottimale da una struttura chiamata Trie .
Usando un trie, non dovresti nemmeno impostare un limite inferiore per i personaggi. La ricerca viene eseguita in O(n) dove n è la lunghezza del testo della query ed è indipendente (principalmente) dal numero di elementi di ricerca presenti nel database.
Dai un'occhiata all'implementazione trie basata su node.js che ho fatto - MyTriePOC .
Dal punto di vista dell'esperienza utente, se stai davvero impostando un limite inferiore, la migliore pratica è quella di fornire una descrizione per indicare all'utente di continuare a digitare più caratteri per ottenere i migliori risultati.