FTS5 (Full-Text Search version 5) es un módulo de extensión para SQLite que implementa un motor de búsqueda de texto completo. A diferencia de las búsquedas LIKE o GLOB, FTS5 indexa el contenido textual de una o más columnas de una tabla, creando un índice invertido que permite búsquedas mucho más rápidas y sofisticadas. Soporta tokenización personalizable, ranking de resultados basado en relevancia, búsqueda de frases, prefijos, proximidad y operaciones booleanas. Su diseño está optimizado para el rendimiento y la eficiencia en el almacenamiento, siendo una mejora significativa sobre versiones anteriores como FTS3 y FTS4.
FTS5 es utilizado en cualquier aplicación que requiera capacidades de búsqueda de texto completo embebidas y eficientes sin la sobrecarga de un servidor de búsqueda dedicado. Ejemplos incluyen aplicaciones móviles (iOS/Android) para buscar notas, correos electrónicos o documentos locales; aplicaciones de escritorio que gestionan colecciones de documentos o bases de conocimiento; navegadores web para historial o marcadores; y sistemas embebidos que necesitan indexar logs o metadatos. Es una elección popular para aplicaciones que ya utilizan SQLite como su base de datos principal y necesitan añadir funcionalidad de búsqueda robusta directamente en el mismo proceso.
Para un arquitecto, FTS5 es crucial porque ofrece una solución de búsqueda de texto completo potente y de bajo acoplamiento directamente dentro de SQLite, eliminando la necesidad de integrar y mantener un motor de búsqueda externo como Elasticsearch o Solr para muchos casos de uso. Esto simplifica la arquitectura, reduce la latencia de las consultas y disminuye los requisitos operativos. Sin embargo, es importante considerar los trade-offs: mientras que FTS5 es excelente para bases de datos embebidas o de tamaño moderado, no está diseñado para escalar horizontalmente en un entorno distribuido ni para manejar volúmenes de datos o tasas de indexación que justificarían un sistema de búsqueda distribuido. La elección depende del tamaño del dataset, la complejidad de las consultas, los requisitos de escalabilidad y la infraestructura existente.