[PHP] Query fulltext

filomeni

Moderatore
Membro dello Staff
MOD
14 Mag 2006
1.054
6
38
53
Roseto degli Abruzzi (TE)
www.sitiweb.cloud
Ciao, il problema con la seguente query:
PHP:
$sql="SELECT * , MATCH(desc_att, tag) AGAINST('$var1, $var2') AS attinenza FROM esercizi_com WHERE MATCH(desc_att, tag) AGAINST('$var1, $var2') ORDER BY attinenza DESC";
mi restituisce errore : Can't find FULLTEXT index matching the column list
Che chiaramente mi dice di inserire gli indici fulltext, ma questi sono presenti nelle colonne "desc_att e tag", una prova inconfutabile è che ho provato singolarmente le colonne prima ad inserire solo "desc_att" e poi "tag".
In tutte e due le prove mi restituisce i risultati di ricerca! Non capisco perchè inserendo entrambi le colonne mi da errore!
Grazie
 

filomeni

Moderatore
Membro dello Staff
MOD
14 Mag 2006
1.054
6
38
53
Roseto degli Abruzzi (TE)
www.sitiweb.cloud
Ciao, il problema con la seguente query:
PHP:
$sql="SELECT * , MATCH(desc_att, tag) AGAINST('$var1, $var2') AS attinenza FROM esercizi_com WHERE MATCH(desc_att, tag) AGAINST('$var1, $var2') ORDER BY attinenza DESC";
mi restituisce errore : Can't find FULLTEXT index matching the column list
Che chiaramente mi dice di inserire gli indici fulltext, ma questi sono presenti nelle colonne "desc_att e tag", una prova inconfutabile è che ho provato singolarmente le colonne prima ad inserire solo "desc_att" e poi "tag".
In tutte e due le prove mi restituisce i risultati di ricerca! Non capisco perchè inserendo entrambi le colonne mi da errore!
Grazie
ma questi sono presenti nelle colonne "desc_att e tag"
Si nel post l'ho detto... Gli indici FULLTEXT ci sono in entrambi i campi
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
non ho capito se hai due indici o l'indice composto, ma forse sono io parco di parole,

vuole l'indice composto dalle due colonne e nello stesso ordine con cui li elenchi nel match,
non bastano i due indici separati
se ricordo il comando,
alter table xyz add FULLTEXT(desc_att, tag)

il messaggio mi sembra chiaro
Can't find FULLTEXT index matching the column list
non trova l'indice che corrisponde alla lista delle colonne
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
per tagliare "la testa al toro" basterebbe che filomeni postasse come ha fatto il create table, dovrebbe essere quelacosa di simile, da li penso che si possa capire dov'è l'inghippo
Codice:
id INT(9) UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
desc_att VARCHAR(100),
tag TEXT,
FULLTEXT (desc_att,tag)

ho messo le lunghezze a caso
 

filomeni

Moderatore
Membro dello Staff
MOD
14 Mag 2006
1.054
6
38
53
Roseto degli Abruzzi (TE)
www.sitiweb.cloud
I campi FULLTEXT li ho creati con phpMyAdmin e non da codice. Comunque i citati "desc_att" e "tag" le proprietà sono entrambi text e ad entrambi assegnati gli indici FULLTEXT.
Codice:
id INT(11) UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
desc_att TEXT,
tag TEXT,
FULLTEXT (desc_att,tag)
inserisco screenshot di phpMyAdmin
campi.JPG
fulltext.JPG
 

filomeni

Moderatore
Membro dello Staff
MOD
14 Mag 2006
1.054
6
38
53
Roseto degli Abruzzi (TE)
www.sitiweb.cloud
il messaggio mi sembra chiaro
Can't find FULLTEXT index matching the column list
non trova l'indice che corrisponde alla lista delle colonne
Si @marino, il messaggio è chiarissimo... ma appunto, siccome i campi sono FULLTEXT, non riesco a capire il perchè e testandoli singolarmente (desc_att e tag) funziona senza restituire errore...
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
sarà che capisco poco di mysql, ma dalla lista degli indici,
a me sembra di vedere due indici distinti, non un indice combinazione di due colonne
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non ho mai avuto occasione di usare il fultext quindi può essere che dica una ca..ata, ma leggendo (maledetto inglese)
https://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html#function_matc
https://dev.mysql.com/doc/refman/5.7/en/fulltext-natural-language.html
sembrerebbe che l'inghippo sia qui
MATCH (col1,col2,...) AGAINST (expr [search_modifier])
cioè in match puoi mettere colonne a piacere, in againts una sola espressione e se non ho capito male tu ne metti due AGAINST('$var1, $var2')
se ca..ata scusa
 

filomeni

Moderatore
Membro dello Staff
MOD
14 Mag 2006
1.054
6
38
53
Roseto degli Abruzzi (TE)
www.sitiweb.cloud
Dunque Borgo, prova a leggere l'articolo riportato qui: https://www.mrw.it/mysql/ricerche-full-text-mysql_7074_4.html, in AGAINST vanno i termini di ricerca e il problema non si presenta qui... ma su: MATCH (col1,col2,...), col1 e col2 devono avere entrambi indice FULTEXT e qui se metto una colonna alla volta la query funziona ma se (come da manuale) le metto tutte e due mi da errore "Can't find FULLTEXT index matching the column list" che appunto significa che non trova l'indice FULTEXT nelle colonne. Ma in realtà le colonne l'indice FULTEXT lo hanno!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ho visto, ma se noti mi sembra che confermi quello che sto dicendo in
AGAINST c'è una sola espressione AGAINST ('tortor') e non due come metti tu
 

filomeni

Moderatore
Membro dello Staff
MOD
14 Mag 2006
1.054
6
38
53
Roseto degli Abruzzi (TE)
www.sitiweb.cloud
beh, a sto punto ho provato a seguire il tuo consiglio quindi su AGAINS ho messo solo una occorrenza quindi la query è diventata la seguente:
PHP:
 $sql="SELECT * , MATCH(desc_att, tag) AGAINST('$var1') AS attinenza FROM esercizi_com WHERE MATCH(desc_att, tag) AGAINST('$var1') ORDER BY attinenza DESC";
e anche in questo caso, mi restituisce lo stesso errore! Sembrerebbe che MATCH non vuole "sentire" le due colonne! Boh! E pure la query è da manuale...
Se la query la eseguo così funziona:
PHP:
 $sql="SELECT * , MATCH(desc_att) AGAINST('$var1') AS attinenza FROM esercizi_com WHERE MATCH(desc_att) AGAINST('$var1') ORDER BY attinenza DESC";
e anche così:
PHP:
 $sql="SELECT * , MATCH(tag) AGAINST('$var1') AS attinenza FROM esercizi_com WHERE MATCH( tag) AGAINST('$var1') ORDER BY attinenza DESC";
invece con entambe le colonne ERRORE...
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Visualizzazione a video risultati query php PHP 0
A form PHP prenotazione tramite query PHP 2
J [PHP] Visualizzare risultato query stessa pagina PHP 3
S [PHP] non prende la query PHP 0
D [PHP] Query che aggiorna tabella PHP 4
A [PHP] Problema query insert [RISOLTO] PHP 14
M [PHP] Ottimizzazione query PHP 13
S [PHP] la query fallisce PHP 2
Alex_70 actor film query per php PHP 1
Tommy03 [PHP] Media valori presi da una query PHP 3
Punix [PHP] query non valida PHP 1
M [PHP] Query UPDATE che non mi aggiorna campi seconda tabella PHP 3
M [PHP] Problema con query select PHP 2
M [PHP] Problemi con query unione PHP 11
D [PHP] Query in OOP class PHP 0
L [PHP] IF con risultato query PHP 7
M [PHP] query string PHP 2
T [php] problema creazione query select-where PHP 5
B [PHP] IF condizioni e query annidate PHP 1
M [PHP] [SOLVED] While query result PHP 11
P [PHP] PEAR Mail e Query PHP 3
Tommy03 [PHP] Errore query selezione avg PHP 0
Monital [PHP] query update e select insieme ma frazionando l'arrray PHP 12
trattorino problema raccapricciante php conteggio query PHP 4
G [PHP] Oracle, convertire una query multiline in Json PHP 3
A [PHP] Modifica caratteri di una query Oracle SQL PHP 0
A [PHP] Undefined index dopo query dal server PHP 1
L [PHP] risultato query in percentuale PHP 1
L [PHP] Nuovo server, query non funzionano PHP 3
G [PHP] inserire risultato di una query in una tabella PHP 3
G [PHP] operazione matematica tra risultati di query PHP 5
P [PHP] Query con variabile PHP 2
G [PHP] convertire data in formato italiano dopo query PHP 6
T PHP: aggiunta a query che non so fare... PHP 2
G [PHP] FORM INVIO VALORI A QUERY CON TRE CONDIZIONI PHP 2
L [PHP] Problema creazione query a numero di parametri variabile PHP 6
bubino8 [PHP] Query syntax error PHP 6
simgia [PHP] Ciclare una query JOIN PHP 2
R [PHP] Estrapolare dati da una query left join PHP 0
C Php/Mysql query JOIN tra tabelle PHP 4
G [PHP] Selezionare OGGI anno precedente per query sql PHP 2
MikSkagit [PHP] Risultato in una sola query PHP 16
C Php/Mysql query JOIN tra due tabelle PHP 18
Laskot Query al DB con php (INSERT) PHP 2
elpirata [PHP] Query per ricercare stringa in più colonne PHP 5
S [PHP] Più fetch_array con unica query... PHP 9
sandropochi [PHP] Query per estrarre record con data successiva a quella odierna PHP 2
Trapano Query in php come ordinare per data e anche per ora PHP 7
U [PHP] estrarre i risultati di una query e visualizzarli in una tabella. PHP 9
C [PHP] PDO prepared statement - select query errore PHP 7

Discussioni simili