Oppure

Loading
31/07/08 10:15
lorenzo
Ho un problema con una query che interroga il mio database.

devo cercare tutti i record nome_file che contengono una parola.

Esempio:

nome_file = "Programmazione"
nome_file = "PieroTofy.it"

mettiamo caso che devo cercare "mma"
ovviamente dovrebbe esere scelto solo il primo record...

volevo farlo con la ricerca di tipo fulltext ma anche se faccio *mma* in AGAINST non mi trova niente.

Quello che volevo sapere è: si può ricercare un pezzo di parola con la fulltext oppure è obbligatorio cercare una parola intera?
aaa
01/08/08 1:33
pierotofy
SELECT * FROM tabella WHERE nome_file = '%mma%'


Occhio che in questo modo non e' possibile sfruttare l'indicizzazione (verranno analizzate tutte le righe della tabella con questa select).
Il mio blog: piero.dev
01/08/08 7:15
lorenzo
Grazie per la risposta ma non è quello che volevo.

Usando il tuo metodo perdo oltre all'indice anche l'attinenza dei risultati, cosa della quale non posso fare a meno...

Io volevo usare la full text per l'attinenza ma devo poter analizzare anche una parte di parola, non solo la parola intera

io avevo messo giù questa query:

SELECT *, MATCH( campo1, campo2 ) AGAINST( '*mma*' IN BOOLEAN MODE ) as attinenza FROM tabella1 WHERE MATCH( campo1, campo2 ) AGAINST( '*mma*' IN BOOLEAN MODE ) ORDER BY attinenza DESC;

ma non funziona. Funziona solo se mma è l'inizio o la fine della parola, non al centro
Ultima modifica effettuata da lorenzo 01/08/08 7:19
aaa
27/08/08 8:38
pierotofy
Ma in che senso perdi l'attinenza? Non capisco...
Il mio blog: piero.dev
27/08/08 9:45
lorenzo
quando si esegue una ricerca fulltext i risultati vengono ordinati in base all'attinenza dei risultati stessi.

infatti si scrive ORDER BY attinenza dove attinenza è MATCH(...) AGAINST(...)

se non sbaglio è un indice numerico

aaa