mirror of
https://github.com/zulip/zulip.git
synced 2025-11-09 16:37:23 +00:00
This commit helps reduce clutter on the navigation sidebar. Creates new directories and moves relevant files into them. Modifies index.rst, symlinks, and image paths accordingly. This commit also enables expandable/collapsible navigation items, renames files in docs/development and docs/production, modifies /tools/test-documentation so that it overrides a theme setting, Also updates links to other docs, file paths in the codebase that point to developer documents, and files that should be excluded from lint tests. Note that this commit does not update direct links to zulip.readthedocs.io in the codebase; those will be resolved in an upcoming follow-up commit (it'll be easier to verify all the links once this is merged and ReadTheDocs is updated). Fixes #5265.
108 lines
3.7 KiB
Markdown
108 lines
3.7 KiB
Markdown
# 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](http://pgroonga.github.io/) 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 operators" 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](http://www.postgresql.org/docs/current/static/textsearch.html),
|
|
with a custom set of English stop words to improve the quality of the
|
|
search results.
|
|
|
|
We use a small extension,
|
|
[tsearch_extras](https://github.com/zulip/tsearch_extras), for
|
|
highlighting of the matching words. There is [some discussion of
|
|
removing this extension, at least as an
|
|
option](https://github.com/zulip/zulip/issues/467), 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
|
|
|
|
Zulip now supports using [PGroonga](http://pgroonga.github.io/) for
|
|
full-text search. PGroonga is a PostgreSQL extension that provides
|
|
full-text search feature. PostgreSQL's built-in full-text search
|
|
feature supports only one language at a time (in Zulip's case,
|
|
English). PGroonga supports all languages simultaneously, including
|
|
Japanese, Chinese and so on, all at once. We expect to migrate
|
|
Zulip's full-text search to only support PGroonga once we have tested
|
|
this new extension fully.
|
|
|
|
The following processes should be executed as the root user. Run:
|
|
|
|
sudo -i
|
|
|
|
### How to enable full-text search across all languages
|
|
|
|
This section describes how to enable using PGroonga to back the
|
|
full-text search feature.
|
|
|
|
To install PGroonga, add `pgroonga = enabled` in the `[machine]`
|
|
section in `/etc/zulip/zulip.conf`:
|
|
|
|
[machine]
|
|
...
|
|
pgroonga = enabled
|
|
|
|
And then run as root:
|
|
|
|
/home/zulip/deployments/current/scripts/zulip-puppet-apply
|
|
|
|
Then, add `USING_PGROONGA = true` in `/etc/zulip/settings.py`:
|
|
|
|
USING_PGROONGA = True
|
|
|
|
And apply the PGroonga migrations:
|
|
|
|
cd /srv/zulip
|
|
./manage.py migrate pgroonga
|
|
|
|
Note that the migration may take a long time, and you can't send new
|
|
messages until the migration finishes.
|
|
|
|
Once the migrations are complete, restart Zulip:
|
|
|
|
su zulip -c /home/zulip/deployments/current/scripts/restart-server
|
|
|
|
Now, you can use full-text search across all languages.
|
|
|
|
### How to disable full-text search across all languages
|
|
|
|
This section describes how to disable full-text search feature based
|
|
on PGroonga.
|
|
|
|
If you want to fully remove PGroonga, first you need to remove the
|
|
PGroonga column (as above, this will take a long time and no messages
|
|
can be sent while it is running). If you intend to re-enable PGroonga
|
|
later, you can skip this step (at the cost of your Message table being
|
|
slightly larger than it would be otherwise).
|
|
|
|
/home/zulip/deployments/current/manage.py migrate pgroonga zero
|
|
|
|
Then, set `USING_PGROONGA = False` in `/etc/zulip/settings.py`:
|
|
|
|
USING_PGROONGA = False
|
|
|
|
And, restart Zulip:
|
|
|
|
su zulip -c /home/zulip/deployments/current/scripts/restart-server
|
|
|
|
Now, full-text search feature based on PGroonga is disabled. If you'd
|
|
like, you can also remove the `pgroonga = enabled` line in
|
|
`/etc/zulip/zulip.conf` and uninstall the `pgroonga` packages.
|