CMS Automne
http://www.automne-cms.org/forum/

Problème de recherche dans polymod
http://www.automne-cms.org/forum/viewtopic.php?f=2&t=2663
Page 1 sur 1

Auteur:  jpg [ Lun Jan 14, 2013 10:59 pm ]
Sujet du message:  Problème de recherche dans polymod

Bonjour,

Je tente de faire une recherche dans un polymod sur un champ string qui contient une simple quote (')
Le système ne retourne pas l'entrée bien qu'elle existe.
Le problème vient de la quote car si je modifie les termes c'est ok
Je pense qu'il s'agit d'un problème d'encodage, j'ai essayé différentes solutions mais rien à faire

La condition est du style:
<atm-search-param search="newsresult" type="keywords" value="test avec ' une quote" mandatory="true" operator="phrase" /> marche pas
ou
<atm-search-param search="newsresult" type="keywords" value="test avec &#039; une quote" mandatory="true" operator="phrase" /> marche pas
(dans la base ' est encodé en &#039; pour un string)

Une idée ?
Merci pour votre aide

Auteur:  atm4u [ Mar Jan 15, 2013 10:19 am ]
Sujet du message:  Re: Problème de recherche dans polymod

Salut,
La value que tu cherches (value="test avec ' une quote") est en dure dans ta rangée ou est-elle récupérée d'un request ?

Auteur:  Fred [ Mar Jan 15, 2013 10:50 am ]
Sujet du message:  Re: Problème de recherche dans polymod

Bonjour,

Je pense que ta requête ne retourne rien parce-que dans la classe CMS_object_search d'Automne il y a une ligne de code qui nettoie les mots clés des virgules et point-virgules :
Code :
//clean user keywords (never trust user input, user is evil)
$value = strtr($value, ",;", "  ");

Donc quand tu recherches "test avec &#039; une quote" le test se fait en fait sur "test avec &#039 une quote".

J'ai essayé en désactivant la ligne qui supprime les , et ; et ça fonctionne en mettant &#039; !

Reste à trouver une vrai solution...
Chez moi ça passe avec operator=any (valeur par défaut) mais je pense que ça utilise ASE (moteur de recherche Automne) d'après le code que j'ai parcouru rapidement.

Auteur:  atm4u [ Mar Jan 15, 2013 10:56 am ]
Sujet du message:  Re: Problème de recherche dans polymod

De mon côté, je préconiserais plutôt un encodage url ou une mise en variable avant utilisation.
Mes tests en local sont concluants sur un request, Automne semble gérer cela correctement mais dans certains cas.
Mettre la chaine dans une variable et exploitée la variable fonctionne.
Donc, perso, je toucherais pas au code source :wink:

Auteur:  Fred [ Mar Jan 15, 2013 11:13 am ]
Sujet du message:  Re: Problème de recherche dans polymod

Ah oui c'est sûr, je ne préconise pas de modifier le code source, c'est une mauvaise idée, je cherchais juste la manière dont Automne traitait la requête :wink:

Auteur:  jpg [ Mar Jan 15, 2013 5:38 pm ]
Sujet du message:  Re: Problème de recherche dans polymod

Merci à tous les 2,

atm4u : le texte n'est pas en dur et j'utilise des variables pour encoder le texte du genre :
<atm-setvar vartype="var" varname="search" value="{helper:io::htmlspecialchars:{var:string:txt}}" /> (pour encoder)
<atm-search-param search="newsresult" type="keywords" value="{var:string:search}" mandatory="true" operator="phrase"/>

fred : j'avais pas vu cette ligne de code ... mais effectivement ça coince car la recherche concerne un string et la quote est encodée en &#039; dans la table (par ex table mod_subobject_string_public champ value)
=> on ne peut pas faire de recherche exacte sur une phrase qui contient une quote si le champ est un string

J'ai testé le truc sans le moteur de recherche ASE.

De plus au niveau de l'admin d'un module polymod qui contient un champ string indexé, si on fait une recherche avec "Phrase exacte" de sélectionné on aura un résultat si on remplace la quote par &#039; dans l'admin le ; ne semble pas être supprimé.

a++

Auteur:  atm4u [ Mer Jan 16, 2013 5:15 pm ]
Sujet du message:  Re: Problème de recherche dans polymod

Ton operator="phrase" est une notion obligatoire de ton développement ?
Je ne pense pas que tu sois obligé d'encoder ton string avant la mise en variable, mais j'ai pas de certitude la-dessus.

Auteur:  jpg [ Mer Jan 16, 2013 5:23 pm ]
Sujet du message:  Re: Problème de recherche dans polymod

atm4u a écrit:
Ton operator="phrase" est une notion obligatoire de ton développement ?

oui

Auteur:  atm4u [ Mer Jan 16, 2013 9:29 pm ]
Sujet du message:  Re: Problème de recherche dans polymod

Je persiste, de mon côté pas de problème :?
Ma solution se base sur un request, ma recherche est ainsi :
Code :
<atm-search-param search="catalogResult" type="keywords" value="{request:string:search}" mandatory="true" operator="phrase"/>

Et cela fonctionne parfaitement.

Donc, je pense qu'il faut chercher ailleurs :
1 - Supprimer ton encodage lors de la mise en variable, je pense même que ta mise en variable est inutile
2 - Le champ est bien en un champ de type "Chaine de caractères"
3 - S'assurer que tu as mis cache="0" dans ton block polymod, car la variable sinon n'est pas ré-actualisée.
Peux-tu vérifier ces éléments et me tenir au courant ?

Auteur:  jpg [ Mer Jan 16, 2013 11:07 pm ]
Sujet du message:  Re: Problème de recherche dans polymod

merci d'avoir testé mais non ... moi aussi je persiste. marche pas si la chaine possède une '
as-tu le moteur de recherche ASE installé ?
ce n'est pas mon cas
a++

Auteur:  atm4u [ Jeu Jan 17, 2013 1:02 pm ]
Sujet du message:  Re: Problème de recherche dans polymod

Ok, bon j'ai monté deux test case et effectivement, j'ai un soucis sur le 2nd qui ressemble a ce que tu décris.
Pas de ASE de mon côté, je vais creuser un peu : http://demo.automne4you.com/web/demo/12 ... t-case.php

Auteur:  atm4u [ Mer Jan 30, 2013 9:45 pm ]
Sujet du message:  Re: Problème de recherche dans polymod

Sans solution ni compréhension du problème j'ai fait une issue sur guithub.
A voir si cela est pris en compte ou pas.

Auteur:  jpg [ Ven Fév 01, 2013 12:04 pm ]
Sujet du message:  Re: Problème de recherche dans polymod

Je te remercie !
Il va falloir que je me penche sérieusement sur guithub.

Page 1 sur 1 Le fuseau horaire est UTC [Heure d’été]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/