Livello di difficoltà: |
|
MySQL è il database open source per eccellenza. Cresciuto molto in questi anni, è diventato il DBMS più utilizzato dalla comunità open source e apprezzato anche da chi scrive pagine con tecnologie diverse da PHP e su server diversi da Linux.
|
| |
Eseguire query Full text
MySQL
Le query Full Text consentono di eseguire ricerche ad alta precisione all'interno di un database. E' possibile sfruttarle solo dalla versione 3.23.23 di MySQL e solo con tabelle di tipo MyISAM e campi CHAR, VARCHAR, o TEXT.
Per eseguire una query Full text su MySQL, è necessario creare un indice che riunisca i vari campi che vanno sfruttati nella query.
Per fare ciò, è sufficiente aggiungere un INDEX di tipo FULLTEXT a tali campi. Su una tabella già esistente, possiamo fare:
ALTER TABLE nomeTabella ADD FULLTEXT (primoCampo,secondoCampo,terzoCampo,...);
Se invece dovessimo creare una nuova tabella, allora nel momento in cui andiamo a specificare i vari campi, possiamo aggiungere il FULLTEXT, ad esempio:
CREATE TABLE nomeTabella (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
titolo VARCHAR(200),
testo TEXT,
FULLTEXT (titolo,testo)
);
Una volta aggiunto l'indice FULLTEXT, possiamo iniziare a eseguire le nostre query. Ammettiamo di voler cercare la parola MySQL all'interno dei campi "titolo" e "testo" (della tabella "notizie") e ordinare i risultati secondo l'attinenza della parola ricercata nei due campi. Ecco come fare:
SELECT titolo,descrizione, MATCH(titolo,testo) AGAINST('mysql') AS attinenza FROM notizie WHERE MATCH(titolo,testo) AGAINST('mysql') ORDER BY attinenza DESC
Così otterremo i due campi titolo e descrizione che all'interno di titolo e testo avranno la parola mysql, ordinati secondo l'attinenza data da MySQL. Ecco come potrebbe essere il risultato della query precedente:
|
titolo
|
descrizione
|
attinenza
|
| Rilasciato MySQL 4.0.16 |
Il database Open Source più utilizzato si aggiorna |
7.212370387556 |
| Disponibile MySQL 4.0.15 |
Nuova versione di bug fix di uno dei DBMS più usati al mondo |
7.0089304929524 |
| MySQL disponibile su IBM eServer zSeries |
Il database open Source è ora configurabile anche su IBM eServer zSeries con Linux installato |
6.1195414142892 |
| MySQL ora è più potente |
Una nuova e importante caratteristica di MySQL è il pieno supporto delle transazioni per applicativi di e-commerce |
5.233245521266 |
| Rilasciato MySQL 4.0.11 |
Disponibile per il download la nuova versione del popolare database |
4.86869959964 |
| Vulnerabilità nel database MySQL |
Grave problema di sicurezza all'interno del più utilizzato database open source |
3.8611711513829 |
| Rilasciato phpMyAdmin 2.5.4 |
Il programma che interagisce con il database MySQL si aggiorna |
3.6027420458677 |
| Rilasciato JMyAdmin 0.7 |
Il team di sviluppo di JMyAdmin, il sistema web based di gestione di MySql open source italiano, ha rilasciato la nuova versione |
3.4924819304996 |
| Nuova falla di sicurezza in Phpbb |
Uno dei più apprezzati forum Open Source soffre di una delicata vulnerabilità |
2.4627044551326 |
| Rilasciato YaBB SE 1.5.2: si consiglia l'aggiornamento immediato |
Uno dei più apprezzati Forum per siti Web, si aggiorna e ripara a diverse falle di sicurezza |
2.254412718088 |
Questo sistema di query Full text può esserci molto utile se volessimo ordinare i risultati di una ricerca in base alla rilevanza di una parola, proprio come fanno i motori di ricerca più blasonati, che ordinano le varie pagine trovate in base a degli algoritmi propri.
Più nello specifico: query Full Text meglio definite
MySQL 4.0.1 e successivi è in grado di scendere ancora più nello specifico ed effettuare delle ricerche con gli operatori logici che utilizzano i motori di ricerca. Torniamo alla sintassi SQL di prima e ammettiamo di voler cercare solo quei records che contengono la parola MySQL ma non PhpMyAdmin. Ecco come si può fare:
SELECT titolo,descrizione, MATCH(titolo,testo) AGAINST('+mysql -phpmyadmin' IN BOOLEAN MODE) AS attinenza FROM notizie WHERE MATCH(titolo,testo) AGAINST('+mysql -phpmyadmin' IN BOOLEAN MODE) ORDER BY attinenza DESC
Vediamo ora tutti i casi e gli operatori utili nelle ricerche FullText:
- mysql phpmyadmin:
Trova uno dei termini nei campi specificati
- +mysql +phpmyadmin:
Nella ricerca, dovranno essere presenti entrambi i campi
- +mysql phpmyadmin:
Seleziona i campi con entrambe le parole, ma assegna un'attinenza maggiore al termine premesso da +
- +mysql -phpmyadmin:
Cerca i campi che contengono mysql ma non phpmyadmin
- +mysql +(>sql <php):
Trova mysql con sql o mysql con php ma assegna un'attinenza maggiore a mysql con sql piuttosto che a mysql con php
- my*:
Estrarrà tutti i campi che contengono il termine my seguito da altri caratteri. Come mysql, myadmin, myodbc ecc.
- "query mysql":
Troverà termini come "query mysql con phpmyadmin" ma non "query SQL con mysql su phpmyadmin". Ciò significa che, includendo i termini tra virgolette, si vuole che la ricerca venga effettuata sulla esatta posizione delle due o più parole.
|