Auteur | Message |
---|---|
Bool
| Inscrit le : 09/05/2005 |
# Le 04/10/2013 à 17:39 Hello les gens, SELECT * FROM monIndex WHERE MATCH('http://foo') déclenche : Syntax error or access violation: 1064 index monIndex: syntax error, unexpected '/' near '//foo' Et vu que le contenu de ce MATCH() vient d'un formulaire HTML, c'est assez pénible... J'ai beau retourner la doc dans les sens, je ne vois rien à ce sujet... et j'imagine que la seule solution est d'utiliser l'API native plutôt que SphinxQL. Ceux d'entre vous qui utilisent Sphinx, avez-vous rencontré le problème, et comment l'avez-vous résolu ? |
tonguide
| Jeremy Inscrit le : 09/05/2005 |
# Le 04/10/2013 à 18:57 T'auras probablement déjà essayer mais je le dis quand même au cas ou ... |
toutgagner
| Olivier Inscrit le : 09/05/2005 |
# Le 04/10/2013 à 19:01 moi je dirais : Jeux-concours |
Bool
| Olivier Inscrit le : 09/05/2005 |
# Le 04/10/2013 à 19:22 @tonguide : en fait, je n'ai même pas essayé, n'ayant trouvé aucune référence aux caractères d'échappement utilisé $query = $cl->EscapeQuery($_GET['q']); Ça c'est une méthode de l'API, donc quitte à installer l'API, autant l'utiliser plutôt que de passer par le wrapper MySQL. Mais je vais regarder le code du truc |
tonguide
| Jeremy Inscrit le : 09/05/2005 |
# Le 04/10/2013 à 19:23 |
Bool
| Olivier Inscrit le : 09/05/2005 |
# Le 04/10/2013 à 19:31 Bon bah la liste des caractères spéciaux : http://git.php.net/?p=pecl/search_engine/sphinx.gi... $string = preg_replace('#([()|\\-!@~"&/\\\\])#', '\\\\$1', $string); @tonguide : yep, au final c'est ça. Merci ! (Message édité le 04-10-2013 à 19h56 par Bool) |
Bool
| Olivier Inscrit le : 09/05/2005 |
# Le 04/10/2013 à 19:32
toutgagner a dit : ... Le truc, c'est que la chaîne dans SphinxQL est une quoted string et que le premier groupe de slashes est utilisé par le parser et qu'il t'en faut donc deux. (LOL, je viens d'écrire en chinois, en anglais c'est sans doute mieux : http://sphinxsearch.com/forum/view.html?id=9558 Oui ça c'est complètement normal, même si j'ai tendance à la rabâcher bien trop souvent :p |
Bool
| Olivier Inscrit le : 09/05/2005 |
# Le 04/10/2013 à 19:44 Donc, problème résolu. Reste maintenant à voir si on peut indexer des URL dans du texte, mais ça c'est une autre histoire. |
acti
| Stéphane Inscrit le : 13/11/2005 |
# Le 04/10/2013 à 19:44 En Python, on utilise la Regex suivante pour "échapper" les caractères : re.sub(r"([=\(\)<>|\-!@~\"&/\\\^\$\=])", r"\\\1", value) Explications : Returns an escaped string. Escape characters that are treated as special operators by the query language parser. Stéphane |
Bool
| Olivier Inscrit le : 09/05/2005 |
# Le 04/10/2013 à 19:56 Yep, c'est très similaire à ce qu'indiquait tonguide. |
acti
| Stéphane Inscrit le : 13/11/2005 |
# Le 04/10/2013 à 20:05 Yep, ça te permet de voir les caractères en question. Stéphane |
Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.
© MHN - Tous droits réservés | CNIL N°844440 | 23/11/2024 13:53:43 | Généré en 7.7ms | Contacts | Mentions légales |