Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
je suis en train d'essayer d'integrer un moteur de recherche via Zend_Search_Lucene.
Cependant, il existe un probleme du au caractère accentué.
Dans un premier temps, j'ai essayé d'integrer le tout en mettant les entitées HTML des caractères mais les resultats des recherches n'était pas corrects, normal à cause du &...;
Ensuite, j'ai transformer les entitées HTML via html_entity_decode, mais j'ai apparement un problème avec iconv ?
Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/newspeg/library/Zend/Search/Lucene/Analysis/Analyzer/Common/Text.php on line 56
Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/newspeg/library/Zend/Search/Lucene/Field.php on line 188
Pour l'instant, je supprime tout les accents pour pouvoir affiner mon systeme de recherche mais cela n'est que temporaire.
Si quelqu'un a une piste a me donner, ou si quelqu'un a déjà integrer un moteur de recherche via ZF, je suis preneur de toute informations.
Par avance, merci
Hors ligne
Je me réponds a moi même .
Tout ce trouve ici :
http://framework.zend.com/wiki/display/ … mail/18970
Désolé pour le dérangement
Hors ligne
Retour sur le problème des accents :
je ne pose ici que les elements censés être identique
// class Doc héritant de Zend_Search_Lucene_Document function title($title){ parent::addField(Zend_Search_Lucene_Field::Text('title', $title,'iso-8859-1')); } function keyword($keyword){ parent::addField(Zend_Search_Lucene_Field::Text('keyword', $keyword),'iso-8859-1'); }
// code permettant l'ajout des documents $doc->title((html_entity_decode($row['titre']))); $doc->keyword(html_entity_decode($categorie['nom']));
l'interclassement de ma BDD est latin1_swedish_ci
les message d'erreur n'apparait que pour la catégorie (keyword)
Detected an illegal character in input string in /home/newspeg/library/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8.php on line 69
Detected an illegal character in input string in /home/newspeg/library/Zend/Search/Lucene/Field.php on line 188
Exemple de terme ayant un problème (affichage plain text ):
Média - Média // catégorie
Accords à France Télévisions - Accords à France Télévisions // title
le premier terme étant celui dans l'index et le deuxieme celui que j'essaye d'ajouter
l'affichage du title est correct alors que l'affichage de la catégorie s'arrete au premier accent trouvé.
J'ai beau parcourir Google, les différents tuto ou exemples trouvés sur le net, je n'arrive pas à resoudre ce problème.
Hors ligne
// class Doc héritant de Zend_Search_Lucene_Document function title($title){ parent::addField(Zend_Search_Lucene_Field::Text('title', $title,'iso-8859-1')); } /* code erroné function keyword($keyword){ parent::addField(Zend_Search_Lucene_Field::Text('keyword', $keyword),'iso-8859-1'); } // */ // code corrigé function keyword($keyword){ parent::addField(Zend_Search_Lucene_Field::Text('keyword', $keyword,'iso-8859-1')); }
Ca m'apprendra a être trop dans le guidon ( &#$¤% de parenthèse)
Hors ligne
moi j'ai trouvé nettement plus simple que tout ça pour régler le problème des accents. J'ai utilisé un header HTML dans index.php :
header('Content-type: text/html;charset=UTF-8');
Notez que ça marche aussi pour les méthodes (actions) appelées en Ajax
Hors ligne
Bonjour,
Quelqu'un serai t'il comment gérer la pagination des résultats de façon optimale ?
Pour ma part le reste a l'air de fonctionner correctement ... mais faut que je continue de potasser ...
Je travaille en UTF-8 (BD, header, ...). J'ai juste un problème avec le caractère "&"
De plus si dans ma requête j'ai ce même caractère "&" j'obtient une belle Exception (ex: Maurel&Prom )
Fatal error: Uncaught exception 'Zend_Search_Lucene_Search_QueryParserException' with message 'Two chars lexeme expected. Position is 7.' in /home/vhosts/m/mauritanien/library/Zend/Search/Lucene/Search/QueryLexer.php:397 Stack trace: #0 /home/vhosts/m/mauritanien/library/Zend/Search/Lucene/FSMAction.php(62): Zend_Search_Lucene_Search_QueryLexer->addQuerySyntaxLexeme() #1 /home/vhosts/m/mauritanien/library/Zend/Search/Lucene/FSM.php(419): Zend_Search_Lucene_FSMAction->doAction() #2 /home/vhosts/m/mauritanien/library/Zend/Search/Lucene/Search/QueryLexer.php(358): Zend_Search_Lucene_FSM->process(1) #3 /home/vhosts/m/mauritanien/library/Zend/Search/Lucene/Search/QueryParser.php(337): Zend_Search_Lucene_Search_QueryLexer->tokenize('maurel&prom', 'utf-8') #4 /home/vhosts/m/mauritanien/library/Zend/Search/Lucene.php(554): Zend_Search_Lucene_Search_QueryParser::parse('maurel&prom') #5 [internal function]: Zend_Search_Lucene->find('maurel&prom') #6 /home/vhosts/m/mauritanien/library/Zend/Search/Lucene/Proxy.php(272): call_user_fun in /home/vhosts/m/mauritanien/library/Zend/Search/Lucene/Search/QueryLexer.php on line 397
Hors ligne
Hello, j'ai effectivement ce problème d'accent. J'ai tout encodé en UTF-8 et je n'arrive pas à effectuer une récherche sur les accents. Il ne me retourne rien... #@éèè%ain d'encodage de $~à@de
PS. : en fait il a suffit de faire un utf8_decode() sur la chaine de ma recherche et c'est passé.
Dernière modification par frederic (10-09-2007 16:09:23)
Hors ligne
Pages: 1