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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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.
1
sql_query_pre = SET NAMES utf8
Esta entrada está licenciada bajo
CC BY 4.0
por el autor.