it-swarm-eu.dev

Quante lettere devono essere digitate "indovinando" la ricerca Ajax prima del primo suggerimento?

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 ..

10
kuakeli

Rango secondario

Se hai un altro fattore che può classificare i risultati (ad es. "Popolarità", "rango kuakeli"):

  • inizia con la prima lettera
  • limitare i risultati per il secondo rango, selezionando la TOP N

(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:

  • Parte della query viene eseguita in modo sincrono e devi limitare il blocco dell'interfaccia utente
  • Devi limitare il traffico/hit al provider di ricerca

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.

10
peterchen

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.

1
Aniket Lawande