Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 17-01-2009 15:02:51

Cidrolin
Membre
Date d'inscription: 21-08-2008
Messages: 74

[Zend 1.7] Problème de requête fulltext

bonjour,

je souhaite effectuer une requête de recherche fulltext par l'intermédiaire de Zend Framework avec les $select->from, where, having, etc. et trier les résultats par la pertinence définie par mysql, donc par MATCH(toto) AGAINST('ma recherche'). Donc je rajoute un order('pertinence DESC'). Le problème c'est que cela me renvoie une erreur SQL, me disant que le champ pertinence n'a pas été trouvé. Pourtant, je l'ajoute  bien dans la liste des champs en troisième paramètre de $select->from. Si je change la variable du order pour trier par titre par exemple, il n'y a plus d'erreur SQL. Je fais un print_r des  résultats et l'élément 'pertinence' existe pourtant bien dans les tableaux d'enregistrements.

Quelqu'un a-t-il une idée ?

Merci

Hors ligne

 

#2 17-01-2009 20:19:36

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: [Zend 1.7] Problème de requête fulltext

et si tu fait un un affichage de ta requête ça donne quoi ? Voir un peu ou le prob se situe dans la requête qu'il construit.

Code:

echo $select;

Société : Direct Info Service

Hors ligne

 

#3 18-01-2009 09:43:01

Cidrolin
Membre
Date d'inscription: 21-08-2008
Messages: 74

Re: [Zend 1.7] Problème de requête fulltext

Salut, merci de ta réponse, en fait j'ai du mal à voir en faisant ce fameux echo justement. J'ai l'impression que le constructeur de requête de Zend ajoute une parenthèse, mais pas au bon endroit.

Requête censée être générée et qui fonctionne :

Code:

SELECT `r`.`*` , (
( 1.3 * (
MATCH (
title, summary
)
AGAINST (
'test'
IN BOOLEAN
MODE
) ) ) + ( 0.6 * (
MATCH (
title, summary
)
AGAINST (
'test'
IN BOOLEAN
MODE
) ) )
) AS relevance
FROM ma_table AS r
WHERE (

MATCH (
title, summary
)
AGAINST (
'test'
IN BOOLEAN
MODE
)
)
HAVING relevance >0
AND (
active = '1'
)
ORDER BY relevance DESC
LIMIT 0 , 30

Requête créée par le zend Framework, qui ne fonctionne pas

Code:

SELECT r.*, 
( 1.3 * (
MATCH (
r.summary
) 
AGAINST (
'test' 
IN BOOLEAN
MODE
) ) ) + ( 0.6 * (
MATCH (
title
) 
AGAINST (
'test'
IN BOOLEAN MODE
 ) ) ) AS `relevance` FROM `ma_table` AS `r` 
WHERE 
MATCH (
r.title, r.summary
) 
AGAINST (
"test" 
IN BOOLEAN
MODE
)

AND (
active= '1'
) 
HAVING (
relevance > 0
) ORDER BY `r`.`relevance` DESC

Avec la requête générée par le Zend Framework, relevance n'est pas considéré comme un enregistrement récupéré. Je me suis dit que ça pouvait être dû au calcul effectué pour le champ relevance, mais en faisant simplement une récupération de match(title,summary) AS relevance, la requête ne fonctionne pas non plus.

En remplaçant le order by relevance par un autre order, la requête fonctionne. Et si je fais un print_r des résultats, l'enregistrement "relevance" est bien affiché dans chaque ligne de tableau.

Merci de votre aide

Dernière modification par Cidrolin (18-01-2009 09:44:53)

Hors ligne

 

#4 19-01-2009 10:22:19

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Zend 1.7] Problème de requête fulltext

Salut,
Apparement dans le code généré tu as un ORDER BY `r`.`relevance` DESC
ce qui ne peut pas fonctionner avec le r.
Par contre, de souvenir, il n'y a pas un moyen de faire un order par le numéro de colonne?

Hors ligne

 

#5 19-01-2009 11:56:06

Cidrolin
Membre
Date d'inscription: 21-08-2008
Messages: 74

Re: [Zend 1.7] Problème de requête fulltext

tu as raison, c'était ça.

J'ai pas compris comment j'ai fait pour débugguer dans tous les sens et sans même avoir enlevé ce fichu r :S Je suis le roi pour débugguer à l'envers.

Merci

Désolé du dérangement.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages