Risorse per webmaster

L A   C O M U N I T À   V I R T U A L E   I T A L I A N A   P E R   W E B   M A S T E R S

 
 
      Tecnologie
      HTML
      CSS
      DHTML
      FLASH
      ASP
      PHP
      JSP
      PERL
      XML
      SMIL
      WIRELESS
      PALMARI
      APACHE
      MYSQL
      PICOSQL
 
      Grafica
 
      Servizi
 
      Raccolte
 
      Recensioni
 
      Analisi
 
      Disclaimer

   Per tutti
 
  .: Magazine
  .: Editor
  .: Appunti
  .: Gratis
  .: Scripts
  .: Components
 
   Home page

Partner
Comunicati stampa
Proposte di viaggio
Prenotazione hotel
Prenota vacanze
Accessori palmari
Cerca alberghi
Guide turistiche

versione stampabile Mostra una versione adatta per la stampa  

Livello di difficoltà:Livello di difficoltà: medio  
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.
 

 
 
Home > mysql > ...   © 1999-2017 Risorse.net, tutti i diritti riservati