Skip to content

Search implementation update

Michael Gratton requested to merge mjog/search-update into mainline

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

Merge request reports