Newsgroup: it.comp.software.database
Titolo: Ricerca di una parola all'interndo di una serie di keywords

Mettiamo che ho dei campi di tabelle che contengono ognuna una serie di
keywords:
audio, video,impianti stereo,hi fi, hi-fi,stereo,sterei, autoradio, car
center, home theater, tv, televisione, televisioni, televisori,televisore,
plasma, lcd, crt, navigatori, radio,mp3,cd, compact disc,dvd,
lettori,casse,altoparlanti,dvd-r,blueray,blue ray, blue-ray,hddvd,hd-dvd,
hd, amplificatori,antennista, antenne, antenna, paraboliche, parabolica,
satellitari, satellitare,decoder,sky,digitale, terrestre,parabole,
dipoli,feed,audio, video,impianti stereo,hi fi,stereo,sterei, autoradio,
car, center, home, theater, tv, televisione, televisioni,
televisori,televisore, plasma, lcd, crt, navigatori, navigatore,
radio,mp3,cd, compact, disc,dvd, sky,
lettori,casse,altoparlanti,dvd-r,blueray,blue, ray, blue-ray,hddvd,hd-dvd,
hd, amplificatori,amplificazione, amplificatore, amplificazioni,audio,
video, televisione,  televisioni, schermo, schermi,  proiettore,
proiettori, riparazione video, riparazioni
Mi servirebbe sapere come posso ricercare una frase o una serie di parole
INTERE all'interno delle singole frasi separate dalla virgola.
Esempio Se cerco la parola "pianti" non mi deve trovare la parola
"impianti" ma al limite non mi trova nulla, in pratica è come se potessi
splittare il testo nelle singole frasi separate dalla virgola e all'interno
trovare la parola intera.
La query alla fine dovrebbe rilasciarmi l'elenco degli id delle colonne che
contengono le parole ricercate.
Grazie mille.
Stefano

Il database che utilizzo è Mysql.
Stefano

 Stefano
Vedi la ricerca Full-text di MySQL.
http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
ci sono funzioni per la ricerca di parole intere e espressioni booleane con parole intere o parziali.
ciao
gmax
-- 
 _  _ _  _
(_|| | |(_|><  The Data Charmer
 _|
http://datacharmer.org/

 ci sono funzioni per la ricerca di parole intere e espressioni booleane con parole intere o parziali.
Si ho visto ma non ho capito molto č per questo che ho postato qui il
problema, saresti cosě gentile da farmi un esempio di query?
Grazie Stefano


1) aggiungi alla tabella (che deve essere di tipo MyISAM) un indice FULLTEXT
   per esempio, se il campo con le parole chiave si chiama 'riferimenti'
   ALTER TABLE nome_tabella add FULLTEXT (riferimenti);
2) ricerca usando questo costrutto
  # cercare 'pianti'
  SELECT elenco_campi
  FROM nome_tabella
  WHERE match(riferimenti) AGAINST ('pianti');
Stai attento che, in questo contesto (senza IN BOOLEAN MODE) se la parola compare in piů del 50% dei record, non viene
trovata
  # cercare 'pianti' in modo assoluto
  SELECT elenco_campi
  FROM nome_tabella
  WHERE match(riferimenti) AGAINST ('+pianti' IN BOOLEAN MODE);
  # cercare parole che cominciano con 'pianti'
  SELECT elenco_campi
  FROM nome_tabella
  WHERE match(riferimenti) AGAINST ('+pianti*' IN BOOLEAN MODE);
  # cercare 'video' e 'stereo'
  SELECT elenco_campi
  FROM nome_tabella
  WHERE match(riferimenti) AGAINST ('+video +stereo' IN BOOLEAN MODE );
  # cercare 'video' e ( 'stereo' oppure 'mono')
  SELECT elenco_campi
  FROM nome_tabella
  WHERE match(riferimenti) AGAINST ('+video +(stereo mono)' IN BOOLEAN MODE );
Dopodiché, se ottieni risultati, fai un piccolo sforzo e leggi il manuale.


   WHERE match(riferimenti) AGAINST ('pianti');
Grazie infinite, ero già arrivato a questa prima soluzione e funziona
correttamente, le aggiunte che mi hai riportato mi consentono di fare altre
ricerche significative.
Ciao Stefano