probleme de requette

led
Eléphanteau du PHP | 23 Messages

12 sept. 2007, 13:06

Bonjour,

J'ai l 'impression qu'on ne peut pas faire ce genre de requete:

Code : Tout sélectionner

select * from search where match(Contenu) against('subvention') and Titre like "%subvention%" And Keyword like "%subvention%" OR match(Contenu) against('retard') and Titre like "%'retard'%" And Keyword like "%retard%" OR match(Contenu) against('avion') and Titre like "%'avion'%" And Keyword like "%'avion'%" OR match(Contenu) against('politique') and Titre like "%'politique'%" And Keyword like "%'politique'%" OR match(Contenu) against('jeux') and Titre like "%'jeux'%" And Keyword like "%'jeux'%" OR match(Contenu) against('france') and Titre like "%'france'%" And Keyword like "%'france'%" order by dtPublication asc limit 0 , 10
SI je ne garde que les match ... against je trouve des résultat sinon aucun.
Pouvez vous m'aider s'il vous plait?
Sinon j'hésite a mettre des champs fulltext sur KeyWor d et Titre ....
Modifié en dernier par led le 12 sept. 2007, 14:14, modifié 1 fois.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

12 sept. 2007, 13:17

Euh... tu t'y retrouves avec tous ces and And OR and And OR and And OR ? Essaie en sautant des lignes et en mettants des parenthèses pour grouper les expressions comme

Code : Tout sélectionner

(a AND b) OR (b AND c AND d)

led
Eléphanteau du PHP | 23 Messages

12 sept. 2007, 14:13

Oui c'est vrai ce n'est pas trop lisible.
Mais le véritable sujet de ma question est de savoir si l'on peut faire des requete mélant des recherches sur des champs fulltext via le match(champs) against(valeur recherche) et des recherches champs like %mot recherche%.
Car apparement, ma requete ne retourne aucun resultat...

Code : Tout sélectionner

select * from search where (match(Contenu) against('subvention') and Titre like "%subvention%" And Keyword like "%subvention%") OR (match(Contenu) against('retard') and Titre like "%'retard'%" And Keyword like "%retard%") order by dtPublication asc limit 0 , 10

Merci

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

12 sept. 2007, 14:25

le véritable sujet de ma question est de savoir si l'on peut faire des requete mélant des recherches sur des champs fulltext via le match(champs) against(valeur recherche) et des recherches champs like %mot recherche%
C'est possible, pour peu que tu ne te plantes pas entre les AND et les OR.

led
Eléphanteau du PHP | 23 Messages

12 sept. 2007, 15:03

Effectivement on peut mais j'ai changer ma base en mettant Keyword et Titre en fulltext.

Le resultat le plus marrant est qu'une requete avec match against met plus de temps qu'une requete n'utilisant que des like or et and... Moi qui pensait que le "match again" optimiser les scripts....