Sphinx configuración. Busquedas con y sin acentos y carácteres utf8

Sphinx configuración. Busquedas con y sin acentos y carácteres utf8

Para aquellos que usen Sphinx como motor de búsqueda en sus aplicaciones y que necesitan realizar búsquedas independientes de los acentos (buscar “jose” y encontrar “jose” y “josé”), también que sea capaz de buscar eñes, les vendrá muy bien la siguiente configuración del charset para español.

charset_table = 0..9, A..Z->a..z, _, -, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F, 
U+C7->U+E7, U+E7, 
        U+D1->U+F1, U+F1, 
        U+DD->y, U+FD->y, 
        U+C0->a, U+C1->a, U+C2->a, U+C3->a, U+C4->a, U+C5->a, 
        U+E0->a, U+E1->a, U+E2->a, U+E3->a, U+E4->a, U+E5->a, 
        U+C8->e, U+C9->e, U+CA->e, U+CB->e, 
        U+E8->e, U+E9->e, U+EA->e, U+EB->e, 
        U+CC->i, U+CD->i, U+CE->i, U+CF->i, 
        U+EC->i, U+ED->i, U+EE->i, U+EF->i, 
        U+D2->o, U+D3->o, U+D4->o, U+D5->o, U+D6->o, 
        U+F2->o, U+F3->o, U+F4->o, U+F5->o, U+F6->o, 
        U+D9->u, U+DA->u, U+DB->u, U+DC->u, 
        U+F9->u, U+FA->u, U+FB->u, U+FC->u

        charset_type                            = utf-8

ejemplo de uno de mis index en Sphinx

index mi_indice
{
        source                                  = mi_indice
        path                                    = /path/completo_a_indice/mi_indice
        docinfo                                 = extern

        charset_table = 0..9, A..Z->a..z, _, -, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F, 
        U+C7->U+E7, U+E7, 
        U+D1->U+F1, U+F1, 
        U+DD->y, U+FD->y, 
        U+C0->a, U+C1->a, U+C2->a, U+C3->a, U+C4->a, U+C5->a, 
        U+E0->a, U+E1->a, U+E2->a, U+E3->a, U+E4->a, U+E5->a, 
        U+C8->e, U+C9->e, U+CA->e, U+CB->e, 
        U+E8->e, U+E9->e, U+EA->e, U+EB->e, 
        U+CC->i, U+CD->i, U+CE->i, U+CF->i, 
        U+EC->i, U+ED->i, U+EE->i, U+EF->i, 
        U+D2->o, U+D3->o, U+D4->o, U+D5->o, U+D6->o, 
        U+F2->o, U+F3->o, U+F4->o, U+F5->o, U+F6->o, 
        U+D9->u, U+DA->u, U+DB->u, U+DC->u, 
        U+F9->u, U+FA->u, U+FB->u, U+FC->u

        charset_type                            = utf-8
        stopwords                               =/path/completo_a_indice/stopwords.txt
}

ACTUALIZACIÓN (05-04-2010)

Después de mucho pelearme con los acentos y las eñes con Sphinx he conseguido optimizar y dar con el charset adecuado.

 charset_table = 0..9, A..Z->a..z, a..z, 
                                U+DD->y, U+FD->y, 
                                U+D1->n, U+F1->n, 
                                U+C0->a, U+C1->a, U+C2->a, U+C3->a, U+C4->a, U+C5->a, 
                                U+E0->a, U+E1->a, U+E2->a, U+E3->a, U+E4->a, U+E5->a, 
                                U+C8->e, U+C9->e, U+CA->e, U+CB->e, 
                                U+E8->e, U+E9->e, U+EA->e, U+EB->e, 
                                U+CC->i, U+CD->i, U+CE->i, U+CF->i, 
                                U+EC->i, U+ED->i, U+EE->i, U+EF->i, 
                                U+D2->o, U+D3->o, U+D4->o, U+D5->o, U+D6->o, 
                                U+F2->o, U+F3->o, U+F4->o, U+F5->o, U+F6->o, 
                                U+D9->u, U+DA->u, U+DB->u, U+DC->u, 
                                U+F9->u, U+FA->u, U+FB->u, U+FC->u, U+0027

Ejemplo de uno de mis index

index mi_index
{
 source                    = mi_source
 path                    = /path/a/mi/indice/indices/mi_index
 docinfo                    = extern
 mlock = 0
 charset_type = utf-8
 charset_table = 0..9, A..Z->a..z, a..z, 
 U+DD->y, U+FD->y, 
 U+D1->n, U+F1->n, 
 U+C0->a, U+C1->a, U+C2->a, U+C3->a, U+C4->a, U+C5->a, 
 U+E0->a, U+E1->a, U+E2->a, U+E3->a, U+E4->a, U+E5->a, 
 U+C8->e, U+C9->e, U+CA->e, U+CB->e, 
 U+E8->e, U+E9->e, U+EA->e, U+EB->e, 
 U+CC->i, U+CD->i, U+CE->i, U+CF->i, 
 U+EC->i, U+ED->i, U+EE->i, U+EF->i, 
 U+D2->o, U+D3->o, U+D4->o, U+D5->o, U+D6->o, 
 U+F2->o, U+F3->o, U+F4->o, U+F5->o, U+F6->o, 
 U+D9->u, U+DA->u, U+DB->u, U+DC->u, 
 U+F9->u, U+FA->u, U+FB->u, U+FC->u, U+0027
 min_word_len = 1
 html_strip = 0
 stopwords               =/path/a/stopwords/stopwords.txt

}

es muy importante tener las tablas y los datos en las tablas en UTF8 y en el source añadir la siguiente instrucción.

sql_query_pre = SET NAMES utf8

Tags de búsquedas:

busquedas con y sin acentos wordpress, luxury sphinx

Posts Relacionados:


4 Comentarios en “Sphinx configuración. Busquedas con y sin acentos y carácteres utf8”

  1. JoeZ99 dice:

    Me has salvado la vida, man. Me estaba volviendo loco probando charset tables. pero hasta que no vi en tu post la entrada sobre set names utf8 no logre nada.

  2. Luis dice:

    Hola,

    No entiendo porque incluyes en la tabla de códigos de caracteres los siguientes:
    U+410..U+42F y U+430..U+44F

    Según he visto en una web son caracteres pertenecientes al alfabeto cirílico.
    Aquí se pueden ver:
    http://www.utf8-chartable.de/unicode-utf8-table.pl?start=1024

    Saludos

Deja tu comentario

Nombre:

Email (no será publicado)

Website

Comentario

Colabora, añade +1 a mi blog!!