Search implementation update
This implements a few things:
- Upgrades the SQLite FTS implementation from FTS3 to FTS5 (DB upgrade included)
- Introduces an abstract query expression class hierarchy for representing parsed search queries
- Moves parsing of search queries from then engine to the client, allowing easy localisation and customisation
- Adds support for some additional features like quoted search operator values (e.g.
subject:"test results"
) - Implements a custom SQLite FTS5 tokeniser that performs correct Unicode normalisation, case-folding, and word segmentation courtesy of
libicu
- Fixes some issues with search stopping working, no such id problem reports, etc
A DB upgrade is required since there is no means of converting a FTS3 table to FTS5 aside from re-creating it.
Fixes #838 (closed), #814 (closed), #756 (closed), #474 (closed), #121 (closed)
Edited by Michael Gratton