ricerca fulltext in una videoteca

salve a tutti,ho creato una videoteca online con una tabella chiamata film nella quale ci sono i seguenti campi sui quali mi interessa fare una ricerca:

-titolo film

-attore del film

-regista del film

-genere film.

ho creato l'indice fulltext sui campi -titolo film -attore del film-regista del film e per fare la ricerca ho utilizzato la seguente query:

SELECT * FROM film join copertina on(id_file=id_copertina) WHERE MATCH(attore,regista,nome_film) AGAINST('$attore $regista $titolo' IN BOOLEAN MODE) or genere='$genere' limit $inizio, $num"

Il problema che quando faccio la ricerca ,mi trova in valori presenti nella clausola against anche se ad esempio nel campo titolo metto il nome di un attore,trovandomi tutti i film di quell'attore.

Ci sarebbe un modo per far si che la ricerca venga effetuata solamente se metto il nome dell'attore nel rispettivo campo attore,cosi come anche per gli altri 2 campi?

Un altro problema riscontrato che se cerco l'attore e il genere mi trova tutti i film dell'attore del genere specificato piu gli altri film dello stesse genere.

se poi utilzzo AND se metto solo il genere naturalmente non ho nessun risultato perche gli altri campi sono vuoti.

inviato 8 anni fa
tommy86
X 0 X

devi inserire un po' di logica nello script...

la query va costruita dinamicamente inserendo le varie condizioni della WHERE solo se il relativo valore stato specificato dall'utente. Quindi devi avere 3 indici fulltext e tre condizioni WHERE, da inserire nella query solo se l'utente ne ha specificato un valore.

:bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

ok grazie mille tutto chiaro.

risposto 8 anni fa
tommy86
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda