Saludos!
Les traigo una pequeña demo de cómo usar una característica de SQLite: Full-Text Search (FTS5). Iba a contestar al mensaje de Gambafeliz sobre filtrar acentos y pensé que quizá ya estuviera este tema expuesto en el foro antiguo, no encontré nada al respecto. Seguramente los veteranos ya conozcan esta característica, para los neófitos será algo nuevo. Y cómo lo mejor es un ejemplo práctico aquí tienen una demo básica para empezar con el tema.
¿Qué es FTS5?
En un módulo interno de SQLite que permite realizar búsquedas "Full-Text" mediante la creación de tablas virtuales. Este tipo de búsquedas ignora acentos, mayúsculas ... se lo traga casi todo. Aquí tienen un par de enlaces:
SQLite FTS5
Full-Text Search Wikipedia
Para los que no quieran descargar la demo:
Para usar FTS5 hay que crear una tabla virtual:
[code]
La tabla contendrá los campos de texto sobre los que queremos buscar.
Después la cargamos desde una fuente de datos estándar, en este caso una vista que recoge datos de otras tablas:
[code]
Por último, podemos lanzar las consultas en formato FTS5 que tienen su particularidad:
[code]
La demo.
Antes de nada, el programa es un "hijo putativo"

de una aplicación propia que utilizo para trastear con bases de datos, le he quitado lo irrelevante para el caso y limpiado, pero no tiene control de errores ni comentarios.... no debería darles ningún problema.
En la imagen:
A la izquierda hay un
GridView con información de la conexión y recoge el tamaño de la base de datos SQLite, tema relevante porque verán que esta engorda cual luchador de sumo, aunque no es un problema. Debajo un Log de lo que se va ejecutando con el tiempo empleado y el SQL ejecutado.
A la derecha empezando por arriba:
- La primera linea contiene botones para ejecutar la demo (pasos 1 a 4), otro para borrar la tabla virtual FTS5, otro que muestra las tablas en la base de datos y el que cierra la aplicación.
- La segunda es un Combobox que una vez completados los 4 pasos contiene sentencias SQL Full-Text de ejemplo para ver las posibilidades.
- La tercera es TextArea donde se cargan las sentencias SQL, se pueden modificar y volver a lanzar. Todas las sentencias que ejecuta la demo pasan por aquí. A su lado hay 3 botones: ejecutar el SQL, limpiar el TextArea, limpiar el GridView. Si pulsan Enter en TextArea ejecuta la sentencia. Si hacen doble click sobre una linea del Log se vuelve a cargar el SQL aquí.
- Por último un GridView con los resultados.
Todo, o casi todo, tiene un
tooltip explicativo.
Los pasos a dar:
- Comprobar que nuestro SQLite tiene FTS5 habilitado, en la imagen se puede ver en la linea 8. En el LOG se ve la versión de SQLite que estamos utilizando.
- Crear y cargar los datos. Hubiera subido la base de datos que uso para pruebas, son datos de direcciones en España: Autonomía - Provincia - Población - Código Postal - Dirección. Pero hay una limitación de tamaño en lo que se puede subir al foro. Los datos van en un CSV con algo más de 100.000 registros, se puede limitar pero así se puede ver el rendimiento en las búsquedas. Ojo que este paso tarda sus buenos 15 minutos.
- Crear la tabla virtual para las búsquedas FTS5. Si pulsan el botón "Tables" verán lo que se crea en la base de datos.
- Cargar la tabla virtual con los datos del CSV. Estos dos últimos pasos son rápidos, no llegan a un 1 segundo a pesar de los 100.000 registros.
Una vez terminados los 4 pasos se carga el Combobox con búsquedas de prueba predefinidas, para trastear con ellas. Verán que la base de datos va engordando a medida que se ejecutan. Con el botón de "Remove" se puede borrar la tabla virtual y repetir los pasos 4 y 5.
El resultado:
Espero que les sirva para sus proyectos, para mi es muy útil.
Un saludo.