Tecnologías, Internet y Contenidos v. 2.0

Joomla, Wordpress, Blogger, Twitter...

Joomla 1.5 - Búsqueda de artículos con tildes

votar

La nueva versión de Joomla (1.5) tiene un problema en su plug-in de búsqueda de artículos. Si hacemos una prueba con los datos de ejemplo de JoomlaSpanish y buscamos "edición" obtendremos dos resultados. Pero si realizamos una búsqueda de la palabra "edicion" sin acento no obtendremos resultados. Esto no preocupara a muchos, pero a veces es requisito del cliente o de uno mismo que las búsquedas devuelvan resultados aunque el que busca no escriba la palabra correctamente.

En la version 1.0 de Joomla sucedia lo mismo y ya explicamos como solucionarlo en un post anterior. Ahora la solución fue más compleja ya que el problema no venía por la codificación de la base de datos, ya que Joomla 1.5 esta en utf-8 y la base de datos no es sensible a la diferencia entre letras acentuadas y no acentuadas.

Para solucionar este problema basta con comentar las líneas 255 y 257 del archivo "\plugins\search\content.php" de modo que quede como el código que sigue:

253 $new_row = array();
254 foreach($row AS $key => $article) {
255 // if(searchHelper::checkNoHTML($article, $searchText, array('text', 'title', 'metadesc', 'metakey'))) {
256 $new_row[] = $article;
257 // }
258 }

Estudiando a fondo el código de Joomla 1.5 , el componente com_search y el plugín de búsqueda de contenidos, me encontré que aunque la base de datos devuelve bien los resultados se realiza a posteriori un comprobación de que dicho resultado no se encuentre en una etiqueta html, y es ahí donde se pierde la insensibilidad a las tildes por el uso de una expresión regular. Quizás se podría ir mas allá y corregir esa expresión regular pero con quitar esta comprobación se obtiene el resultado deseado.

Este mismo cambio debe realizarse en los otros plugins de búsqueda si uno tiene activado la búsqueda en los nombres de categorías y secciones, en contactos y weblinks ya que hacen la misma comprobación y no salen los resultados si uno busca sin poner los acentos a las palabras correctamente.


Espero que comentéis sobre esta solución, para saber si os funciona a todos.

Actualización Diciembre de 2009:

Esta solución consigue corregir el problema con los acentos y consigue que Joomla devuelva resultados correctos para una búsqueda. Pero en dichos resultados no se muestra la palabra destacada si esta lleva acento y no se ha escrito en la búsqueda. Para conseguir que se destaquen los resultados de la búsqueda hay que realizar otro cambio, que os explico en este otro artículo. Destacar los resultados de la búsqueda sin tildes.

17 comentarios

  1. me funciona bien. muchas gracias.

    me extraña que no hay más referencias a este tema o que nadie más hay comentado aquí.

    muchas gracias de nuevo.

     
  2. Jose Says:
  3. Hola, otra vez..

    A mi me costó encontrar esta solución, fueron 3 días de duras búsquedas y pruebas. A mi también me extraña la falta de comentarios y referencias. Quizás se trata de un problema menor, ya que la sensibilidad en las búsquedas no es un requisito demasiado importante.

    Muchas gracias por tu comentario.

     
  4. Anónimo Says:
  5. Muchas gracias, tu articulo me ha servido mucho, justo ha sido aplicar esos cambios al codigo y soluciona rel problema, te estoy muy gradecido. saludos

     
  6. Anónimo Says:
  7. La solución es perfecta, muchas gracia, no sabes lo que me ha costado dar con la solución. El problema que encuentro ahora, es que los resultados de la búsqueda no se destacan, sin embargo al buscar la palabra con acento si que se destacan. Hay alguna solución para esto?

     
  8. Jose Says:
  9. He actualizado la entrada con la solución a lo que comentas de destacar las palabras en los resultados de la búsqueda. Espero que te sirva.

    Un saludo.

     
  10. Anónimo Says:
  11. La búsqueda resaltada no me funciona.
    ME da el siguiente error

    Warning: preg_replace() [function.preg-replace]: Compilation failed: invalid UTF-8 string at offset 36 in /homepages/10/d291589420/htdocs/joomla/components/com_search/views/search/view.html.php on line 161

    Si lo puedes solucionar estaría perfecto

     
  12. Anónimo Says:
  13. a mi me deja de funcionar si comento esas líneas.

    un saludo

     
  14. Anónimo Says:
  15. El problema es que estaba comentando de la línea 255 a la 257 y no sólo la 225 y 257.

    El de antes :)

     
  16. Jose Says:
  17. Hola..
    veo que has solucionado el problema. Solo hay que comentar las lineas 255 y 257.

    Un saludo.

     
  18. Hola,
    he seguido las instrucciones paso a paso y no logro que las palabras con tilde sean recuperadas tanto en el buscador general de joomla 1.5.18 como en docman. He cambiado el fichero content.php. Las tablas de mysql están en utf8. Puedes echar un vistazo en el sitio web : http://formabus.us.es. No sé que hacer. Estoy un poco desesperado.
    Podrías ayudarme ?
    Jose Manuel

     
  19. Jose Says:
  20. Hola Jose Manuel, veo que has solucionado el problema con el buscador de Joomla ya que hago la prueba de buscar "formación" con tilde y sin ella y los resultados parecen correctos. Para el docman tendrías que realizar una modificación similar pero en el plugin de búsqueda de Docman.

    Le echaré un vistazo esta tarde. Espero encontrar alguna solución.

    Un saludo.

     
  21. Hola,
    En el buscador de Joomla a veces funciona y otras no. Por ejemplo la palabra "formación" sí la localiza pero no "introducción". Ambas tienen tilde. He investigado para ver si sólo buscaba en el título y no es así busca en todos los metadatos.
    Muchas gracias por tu atención

     
  22. rosarito Says:
  23. Funcionó impecable realmente. Muchas gracias!
    Rosario

     
  24. Anónimo Says:
  25. Gracias por el post. Me sirvió para corregir el comportamiento en la búsqueda usando joomla 1.7
    Por cierto, allí las líneas a comentar son la 229 y 231, en esta versión.

    $new_row = array();
    foreach($row AS $key => $article) {
    //if (searchHelper::checkNoHTML($article, $searchText, array('text', 'title', 'metadesc', 'metakey'))) {
    $new_row[] = $article;
    //}

    Saludos,
    Alvaro

     
  26. Anónimo Says:
  27. Muchisimas gracias!!!!!! Me salvó un problemón!!! saludos...

     
  28. Anónimo Says:
  29. Muchas gracias!!! despues de tres años sigue ayudando.

    gracias a este post he logrado configurar mis búsquedas en Joomla 2.5x.

    Allí las líneas son 259 y 261

    foreach($rows as $row)
    {
    $new_row = array();
    foreach($row as $key => $article) {
    // if (searchHelper::checkNoHTML($article, $searchText, array('text', 'title', 'metadesc', 'metakey'))) {
    $new_row[] = $article;
    // }
    }

     
  30. Anónimo Says:
  31. gracias

     

Publicar un comentario

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.