Sphinx configuración. Busquedas con y sin acentos y carácteres utf8
- marzo 17, 2010
- 5 comentario/s
- SysAdmin Tags: Sphinx, 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
Posts Relacionados:
- Indexar las búsquedas full-text con Sphinx. Tutorial como usar Sphinx ¿Cómo realizar búsquedas full-text en una tabla con miles o millones de registros, sin que el mysql falle y el site siga siendo relevante y no se caiga? La solución...
- lista de stopwords en español para sphinx Los stopwords de Sphinx son palabras que no queremos indexar en nuestro motor de búsqueda. El formato por defecto del archivo de stopwords.txt es una lista de palabras separadas por...
- cakephp codificacion en utf8 Cuando tenéis una aplicación en cakephp y todo está en utf8 es muy importante especificar en la configuración de base de datos que se conecte en utf8 porque en cakephp...
- htaccess redireccionamiento con barra a sin barra Para eliminar la barra delante de la url tipo: www.pedroventura.com/blog_programacion/ y dejarlo www.pedroventura.com/blog_programacion insertar este código en el .htaccess afectará a todo el site y no habrá que ir redirigiendo...
- Problemas codificacion web. Configurar codificación utf8 php, mysql y html Después de muchos años y grandes problemas de codificación con php y mysql, puedo afirmar que tengo, bastante controlado el problema con las codificaciones. Bueno por lo menos identificado. Desgraciadamente...

Te ha ayudado el artículo? Colabora!
RSS Feed
Muchas gracias por el charset_table para el config de sphinx… He hecho unas cuantas pruebas y parece que todo ok!
Lo dicho, muchas gracias y un saludo!
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.
Me alegro de que te haya ayudado!!
Un saludo!
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
Pues eso es porque se me ha “colado”. He incluido la configuración standar de los charset utf8 que viene en la web de Sphinx.
http://www.sphinxsearch.com/docs/current.html#conf-charset-type
que son para ingles y Ruso (y lenguas de origen cirilico). Pero que vamos no nos sirve para nada, a menos que quiera sacar una versión de mi web en Ruso.
Pero tampoco me molesta por estar ahí!!