Vorrei implementare per il minisito che sto costruendo un motore di ricerca che interroghi il database mySQL. Prima di imbarcarmi nella programmazione, e magari pentirmi e dover rifare tutto, mi piacerebbe avere da voi un'opinione su alcune riflessioni...
Il database è strutturato in sei tabelle, in cui si ripete un campo uguale, in modo da rendere possibili eventuali join. Fondamentalmente si tratta di anagrafiche inserite in campi varchar o text. Non ho ancora provveduto però a indicizzare con fulltext.
Dico questo perchè pensavo di inserire un campo di ricerca libera in boolean mode, controllato da un'espressione regolare per evitare gli errori di battitura (es: voglio trovare "mario" e digito "nario" o ",ario" o "maro"...).
Qui il primo dubbio: praticamente sono possibili tutti gli errori di battitura immaginabili, mi conviene tirarmi scemo con una RegExp?
Visto che la ricerca fulltext non restitusce chiavi con meno di quattro lettere mentre nel DB ho sicuramente dati importanti di tre lettere sole), pensavo di aggiungere form che interrogano le singole tabelle.
Ad es., se le tabella sono "utente", "interessi", "azienda", pensavo fosse utile mettere tre ricerche separate che però si possono combinare insieme:
Cerca utente:
Cerca interesse:
Cerca Azienda:
Sarebbe sensato fare una ricerca di tipo "like", anche se meno veloce e affidabile della fulltext, ma a parte di nuovo il discorso della RegExp, mi domando se ciò non risulti pesante per la query.
Inoltre, meglio un join tra le tabelle, oppure estrapolare tre array e poi unirli?
Grazie per i suggerimenti che vorrete darmi!
Il database è strutturato in sei tabelle, in cui si ripete un campo uguale, in modo da rendere possibili eventuali join. Fondamentalmente si tratta di anagrafiche inserite in campi varchar o text. Non ho ancora provveduto però a indicizzare con fulltext.
Dico questo perchè pensavo di inserire un campo di ricerca libera in boolean mode, controllato da un'espressione regolare per evitare gli errori di battitura (es: voglio trovare "mario" e digito "nario" o ",ario" o "maro"...).
Qui il primo dubbio: praticamente sono possibili tutti gli errori di battitura immaginabili, mi conviene tirarmi scemo con una RegExp?
Visto che la ricerca fulltext non restitusce chiavi con meno di quattro lettere mentre nel DB ho sicuramente dati importanti di tre lettere sole), pensavo di aggiungere form che interrogano le singole tabelle.
Ad es., se le tabella sono "utente", "interessi", "azienda", pensavo fosse utile mettere tre ricerche separate che però si possono combinare insieme:
Cerca utente:
Cerca interesse:
Cerca Azienda:
Sarebbe sensato fare una ricerca di tipo "like", anche se meno veloce e affidabile della fulltext, ma a parte di nuovo il discorso della RegExp, mi domando se ciò non risulti pesante per la query.
Inoltre, meglio un join tra le tabelle, oppure estrapolare tre array e poi unirli?
Grazie per i suggerimenti che vorrete darmi!
