Blog
Feb
20
Migliorare la funzione "Cerca"
webmaster: 20/02/09 @ 11:53In questi ultimi giorni mi sono concentrato molto per migliorare la funzione "Cerca" di questo sito.
La prima cosa che ho fatto è stata quella di renderla più intelligente, ovvero di limitare i risultati di una ricerca a quella sezione da cui la ricerca è partita. In altre parole, se siete nella sezione Hardware, i risultati saranno limitati a quelli della sezione Hardware, se siete nella sezione Download, i risultati saranno limitati a quelli della sezione Download... Ovviamente è ancora possibile cercare in più sezioni contemporaneamente, ma non è l'opzione di default.
Ho inoltre aggiunto la possibilità di cercare nel blog, cosa prima non era possibile, e, a costo di sembrare noioso, ho lavorato molto all'ottimizzazione delle query. In particolare ho migliorato la query per la ricerca nel forum. Questa era basata su un semplice MATCH AGAINST non molto performante quando parliamo di oltre 400.000 post. Adesso invece utilizziamo l'indicizzamento di default del phpBB e questo ci ha aiutato moltissimo.
È inoltre parecchio tempo che mi frulla per la testa l'idea di cachare le query. So come farlo da quando ho trovato questo articolo (ammetto che mi aspettavo qualcosa di molto più complicato), ma trovare la query giusta da cachare non è facile. Il problema è che un DB è fatto apposta per fornire informazioni in tempo reale: fare il cache di una query ha quindi poco senso - meglio fare il cache di tutta la pagina a questo punto!
Con la ricerca ho però trovato il posto dove ha senso implementare il cache delle query. I risultati delle ricerche infatti andrebbero cercati ogni volta che un utente naviga tra le pagine dei risultati e questo è uno spreco. In questo caso usare il caching è quindi molto utile.
Ho anche deciso di registrare nel DB tutte le query effettuate insieme a quanti risultati vengono trovati e al tempo di esecuzione (coì posso tenere d'occhio le query pericolose). La prima applicazione di questa nuova tabella nel DB è la lista delle ultime query mostrata nella pagina di ricerca: l'idea sarebbe quella di suggerire all'utente ricerche che possono interessargli. Vorrei però utilizzare meglio questi dati e trovare il modo di usarli per poter suggerire ricerche rilevanti a utenti che non hanno trovato nulla. Non sono però sicuro di come poter procedere. Qualcuno ha idee?
Infine ho modificato i messaggi d'errore, quel rosso acceso ogni volta che c'era anche il più piccolo errore mi sembrava davvero eccessivo.
La prima cosa che ho fatto è stata quella di renderla più intelligente, ovvero di limitare i risultati di una ricerca a quella sezione da cui la ricerca è partita. In altre parole, se siete nella sezione Hardware, i risultati saranno limitati a quelli della sezione Hardware, se siete nella sezione Download, i risultati saranno limitati a quelli della sezione Download... Ovviamente è ancora possibile cercare in più sezioni contemporaneamente, ma non è l'opzione di default.
Ho inoltre aggiunto la possibilità di cercare nel blog, cosa prima non era possibile, e, a costo di sembrare noioso, ho lavorato molto all'ottimizzazione delle query. In particolare ho migliorato la query per la ricerca nel forum. Questa era basata su un semplice MATCH AGAINST non molto performante quando parliamo di oltre 400.000 post. Adesso invece utilizziamo l'indicizzamento di default del phpBB e questo ci ha aiutato moltissimo.
È inoltre parecchio tempo che mi frulla per la testa l'idea di cachare le query. So come farlo da quando ho trovato questo articolo (ammetto che mi aspettavo qualcosa di molto più complicato), ma trovare la query giusta da cachare non è facile. Il problema è che un DB è fatto apposta per fornire informazioni in tempo reale: fare il cache di una query ha quindi poco senso - meglio fare il cache di tutta la pagina a questo punto!
Con la ricerca ho però trovato il posto dove ha senso implementare il cache delle query. I risultati delle ricerche infatti andrebbero cercati ogni volta che un utente naviga tra le pagine dei risultati e questo è uno spreco. In questo caso usare il caching è quindi molto utile.
Ho anche deciso di registrare nel DB tutte le query effettuate insieme a quanti risultati vengono trovati e al tempo di esecuzione (coì posso tenere d'occhio le query pericolose). La prima applicazione di questa nuova tabella nel DB è la lista delle ultime query mostrata nella pagina di ricerca: l'idea sarebbe quella di suggerire all'utente ricerche che possono interessargli. Vorrei però utilizzare meglio questi dati e trovare il modo di usarli per poter suggerire ricerche rilevanti a utenti che non hanno trovato nulla. Non sono però sicuro di come poter procedere. Qualcuno ha idee?
Infine ho modificato i messaggi d'errore, quel rosso acceso ogni volta che c'era anche il più piccolo errore mi sembrava davvero eccessivo.
Commenti: 0
Post correlati:
- [26/05/09] Successi di una funzione "Cerca" migliorata
- [06/03/09] Migliorare la funzione "Cerca" II
- [27/01/09] Ottimizzazione query MySql
Post precedente
URL canonico per informare Google dei duplicati
Post successivo
Banner per associazioni senza scopo di lucro