zulip/docs/full-text-search.md

1.6 KiB

Full-text search

Zulip supports full-text search, which can be combined arbitrarily with Zulip's full suite of narrowing operators. By default, it only supports English text, but there is an experimental PGroonga integration that provides full-text search for all languages.

The user interface and feature set for Zulip's full-text search is documented in the "Search help" documentation section in the Zulip app's gear menu.

The default full-text search implementation

Zulip's uses PostgreSQL's built-in full-text search feature, with a custom set of English stop words to improve the quality of the search results.

We use a small extension, tsearch_extras, for highlighting of the matching words. There is some discussion of removing this extension, at least as an option, so that Zulip can be used with database-as-a-service platforms.

In order to optimize the performance of delivering messages, the full-text search index is updated for newly sent messages in the background, after the message has been delivered. This background updating is done by puppet/zulip/files/postgresql/process_fts_updates, which is usually deployed on the database server, but could be deployed on an application server instead.

An optional full-text search implementation

See the option PGroonga pull request for details on the status of the PGroonga integration.