2012-09-19 19 views
5

Tengo una aplicación de Android que busca datos en una base de datos SQLite con tablas virtuales FTS4. Funciona bien, pero cuando los datos dentro de las tablas contienen caracteres especiales (como 'á', 'é', 'í', 'ó', 'ú' o 'ñ') la función SQLite MATCH no da ningún resultado. Estoy perdido en este punto. Gracias.Búsqueda de SQLite FTS4 con caracteres especiales

+0

Qué [tokenizer] (http://www.sqlite.org/fts3.html# tokenizer) ¿estás usando? –

+0

Bueno, no estoy usando ningún tokenizador, y no sé cómo funciona eso. Mi búsqueda es la siguiente: SELECCIONAR * FROM table1_fts4 WHERE table1_fts4 MATCH 'query'; – user1387981

Respuesta

0

Atención: el tokenizador predeterminado es muy pobre. Para obtener buenos resultados, debe implementar un tokenizador personalizado. El camino no es tan simple:

  • encontrar el tokenizer que debe adecuarse a sus necesidades, o desarrollarlo
  • pegamento con fuentes sqlite.c
  • pegar una interfaz JNI (con despalilladora?) para envolver la biblioteca nativa por lo que será accesible desde la máquina virtual Dalvik
  • uso NDK para compilar sqlite.c desde cero y preparar una biblioteca dinámica para Android

Aquí en stackoverflow debe encontrar algunas buenas publicaciones para comenzar a aprender cómo hacerlo.

mirada a estos proyectos para conseguir un buen punto de partida:

  • sqlite4java
  • sqlcipher