> Apparemment le moteur de recherche n'indexe plus les textes en persan.
> Je
> pense que, quand on demande une translittération, si le retour est vide il
> ne faut pas se décourager et indexer la chaine en brut d'unicode, plutôt
> qu'une chaine vide. C'était comme ça dans ma version, non ?
C'est possible, je n'ai pas un corpus multilingue énorme
OK, je viens de vérifier le code, et c'est bien ça : auparavant on tentait
la translittération et si c'était concluant (pas que des '?') on conservait
la trans, sinon on gardait la chaine telle quelle (charset local du site,
probablement utf8).
On peut agir à plusieurs niveaux : translitteration() ou
nettoyer_chaine_indexation() ou indexer_chaine().
=) translitteration(), à mon sens, doit rendre ??? quand elle ne connaiot
pas le caractère demandé ; d'ailleurs elle est utilisée aussi dans
spip_image.php3 pour l'upload de fichiers aux titres accentués (et ça
marche… parfois, en fonction du brouteur)
=) nettoyer_chaine_indexation() est le meilleur candidat, je pense, car elle
assurera un traitement identique à l'indexation et à la recherche. Mais la
difficulté est de ne pas se baser sur la présence des '?' qui peuvent se
trouver dans la chaîne AVANT translittération !
De plus, comme on le passe sur l'ensemble d'un texte, la présence d'une
chaîne non translittérable dans le texte ne doit pas nous dégoûter de
translittérer ce qui est possible. (Dans ma version, on travaillait mot par
mot, mais ça devait être un peu moins rapide...)
Bref, je cherche une manière clean de procéder, mais je ne vois que des
hacks un peu crados : supprimer les ?, exploser la chaîne pour repérer les
mots, créer une chaîne reliée par un séparateur spécifique, translittérer,
reprendre les mots résultats, et en cas de '?' se rabattre sur le mot
correspondant dans l'explosion initiale. Si quelqu'un a une meilleure
solution...
(Sinon, au pire et en attendant, je ferai une table de translittération à la
mano pour le persan, mais ça n'est pas très satisfaisant...)
-- Fil