ricerca full text

ciao sono 49 ore che non chiudo occhio  :2funny:

ho questa query :

SELECT `title`, `loc`.`label` `location`, `gen`.`label_ita` `genre`, MATCH(`description_ita`) AGAINST ('testo') AS `attinence` FROM `sm_announces` `ann` JOIN `sm_genres` `gen` ON `ann`.`genid`=`gen`.`genid` JOIN `sm_locations` `loc` ON `ann`.`loid`=`loc`.`locid` WHERE MATCH(`description_ita`) AGAINST ('test') ORDER BY `attinence` DESC

che in pratica dovrebbe fare una ricerca fulltext nei campi descrizione_ita ed estrarre anche altri dati come id genere,id località,label genere, label localita ecc....

ma non so se è corretta l'errore è :

Can't find FULLTEXT index matching the column list

ma il campo description_ita è fulltext !!!

che cosa sto sbagliando?

:bye:

inviato 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

sistemato :

SELECT `anid`,`title`, `loc`.`label` `location`, `gen`.`label_ita` `genre`, MATCH(`description_ita`) AGAINST ('italiano') AS `attinence` FROM `sm_announces` `ann` JOIN `sm_genres` `gen` ON `ann`.`genid`=`gen`.`genid` JOIN `sm_locations` `loc` ON `ann`.`loid`=`loc`.`locid` WHERE MATCH(`description_ita`) AGAINST ('italiano') ORDER BY `attinence` DESC

mi restituisce :

1, 'Annuncio test 1', 'labelgenere', labellocalita', 1.573253125842

nella descrizione c'è : Descrizione Italiano

ma se provo con :

SELECT `anid`,`title`, `loc`.`label` `location`, `gen`.`label_ita` `genre`, MATCH(`description_ita`) AGAINST ('ggg') AS `attinence` FROM `sm_announces` `ann` JOIN `sm_genres` `gen` ON `ann`.`genid`=`gen`.`genid` JOIN `sm_locations` `loc` ON `ann`.`loid`=`loc`.`locid` WHERE MATCH(`description_ita`) AGAINST ('ggg') ORDER BY `attinence` DESC

non restituisce nulla , anche se un annuncio ha come descrizione ggg

come mai?

:bye:

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

MySQL non indicizza di default parole più corte di 4 caratteri :dunno:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

cioè???

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

cioè è inutile cercare parole lunghe 3, 2 o un carattere. Non le trova.

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

si in effetti :D

volevo sapere come mai cercando una parola esatta contenuta nella descrizione ottengo < 1 di attinenza cose del tipo 0.526 o 0.574 strano :D

e come mai non posso cercare una frazione di parola?

cioè

trashof -> non trova trashofmasters

:bye:

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
modificato 9 anni fa
X 0 X

Il valore dello score non ha un significato assoluto ma solo relativo, ovvero puoi usarlo per confrontare i vari record restituiti dalla query, identificando quelli più attinenti da quelli meno.

Una cosa è cercare "pero", un'altra è cercare "spero", un'altra ancora è "dispero". Per questo motivo il sistema interno di indicizzazione lavora sulle parole intere.

Nelle ultime versioni di MySQL 5 comunque ci sono diverse opzioni che possono modificare il comportamento del motore di indicizzazione e ricerca fulltext.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Ciao GIanni volevo sapere come mai anche la query

SELECT * FROM announces WHERE MATCH(descrizione) AGAINST('questaparola')

non restituisce alcun risultato... ?!?

:bye:

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

quante righe ha la tabella?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

una decina o piu

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

e quante volte compare 'questaparola' nei record?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

una o due non lo so!

in pratica la ricerca la faccio in un solo campo fulltext ( quello in italiano ) la parola è presente...ma non ottengo nessun risultato.

ma è limitata la ricerca fulltext ?

cioè posso capire parole piu lunghe di 4 caratteri,ma che debba comparire >1 volta non è possibile!

:bye:

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

in realtà basta che compaia una volta...  :dunno:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda