PostgreSQL backend: the generated memories.search tsvector column under a GIN index, ranked by
ts_rank_cd (title weight A, topics B, body C).
The query goes through websearch_to_tsquery('simple', ...), which never raises on user text.
Words are joined by or, so a note matches on any word. The word or itself is dropped because
the parser reads it as the operator. The simple configuration does not stem and does not fold
accents, so deploys does not match deploy and cafe does not match café.