2017-01-09 23:03:11 +01:00
|
|
|
# Searching for messages
|
|
|
|
|
2018-09-29 21:37:45 +02:00
|
|
|
Zulip has a powerful search engine under its hood. Search for messages using
|
2022-07-19 04:59:49 +02:00
|
|
|
the search bar at the top of the app.
|
2018-09-29 21:37:45 +02:00
|
|
|
|
|
|
|
## Example
|
|
|
|
|
2021-07-14 08:42:07 +02:00
|
|
|
* `stream:design has:link -is:starred new logo`
|
2018-09-29 21:37:45 +02:00
|
|
|
|
2021-07-14 08:42:07 +02:00
|
|
|
Searches for messages in `#design` that have a link, that you haven't
|
|
|
|
starred, and that contain the words `new` and `logo`.
|
2018-09-29 21:37:45 +02:00
|
|
|
|
|
|
|
The permalink for that search (web only) will look something like
|
2021-07-14 08:42:07 +02:00
|
|
|
this:
|
|
|
|
|
|
|
|
`https://your-zulip-url/#narrow/stream/123-design/has/link/-is/starred/search/new.20logo`.
|
2018-09-29 21:37:45 +02:00
|
|
|
|
|
|
|
## List of operators
|
|
|
|
|
|
|
|
As you start typing, Zulip will suggest possible operator completions.
|
|
|
|
Operators can be used with keywords, or on their own. For example,
|
|
|
|
|
|
|
|
* `stream:design logo` will search for the word `logo` within `#design`
|
|
|
|
* `stream:design` will navigate to `#design`
|
|
|
|
|
|
|
|
Here is the **full list of search operators**.
|
|
|
|
|
|
|
|
* `stream:design`: Search within the stream `#design`.
|
|
|
|
* `stream:design topic:emoji+picker`: Search within the topic `emoji picker`.
|
|
|
|
* `is:private`: Search all your private messages.
|
2019-09-17 02:16:44 +02:00
|
|
|
* `pm-with:ada@zulip.com`: Search 1-on-1 private messages between you and Ada.
|
2022-10-28 19:39:01 +02:00
|
|
|
* `pm-with:ada@zulip.com,bob@zulip.com`: Search group private messages
|
|
|
|
between you, Bob, and Ada.
|
|
|
|
* `group-pm-with:ada@zulip.com`: Search all group private message
|
|
|
|
conversations that include you and Ada, as well as any other users.
|
2018-09-29 21:37:45 +02:00
|
|
|
* `sender:ada@zulip.com`: Search messages sent by Ada.
|
2022-10-22 02:27:24 +02:00
|
|
|
* `sender:me`: [Search messages you've sent](/help/view-messages-sent-by-a-user#view-messages-youve-sent).
|
2018-09-29 21:37:45 +02:00
|
|
|
* `near:12345`: Show messages around the message with ID `12345`.
|
|
|
|
* `id:12345`: Show only message `12345`.
|
2021-09-20 21:02:46 +02:00
|
|
|
* `is:alerted`: See [alert words](/help/pm-mention-alert-notifications#alert-words).
|
2019-02-28 20:42:48 +01:00
|
|
|
* `is:mentioned`: See [mentions](/help/mention-a-user-or-group).
|
2018-09-29 21:37:45 +02:00
|
|
|
* `is:starred`: See [starred messages](/help/star-a-message).
|
2021-07-13 10:17:33 +02:00
|
|
|
* `is:resolved`: Search messages in [resolved topics](/help/resolve-a-topic).
|
|
|
|
* `-is:resolved`: Search messages in [unresolved topics](/help/resolve-a-topic).
|
2018-09-29 21:37:45 +02:00
|
|
|
* `is:unread`
|
|
|
|
* `has:link`
|
|
|
|
* `has:image`
|
|
|
|
* `has:attachment`
|
2022-10-28 19:39:01 +02:00
|
|
|
* `streams:public`: Search the history of all [public
|
|
|
|
streams](/help/change-the-privacy-of-a-stream) in the organization,
|
|
|
|
including streams you are not subscribed to.
|
2018-09-29 21:37:45 +02:00
|
|
|
|
2021-07-14 08:42:07 +02:00
|
|
|
### Excluding messages
|
|
|
|
|
|
|
|
Zulip's search operators can be negated, to exclude messages matching
|
|
|
|
the rule. For example, `stream:design -is:resolved -has:image` will
|
|
|
|
match all messages that don't contain an image and were sent to
|
|
|
|
unresolved topics in the `#design` stream.
|
|
|
|
|
2019-12-11 03:35:03 +01:00
|
|
|
## Searching shared history
|
|
|
|
|
|
|
|
Zulip's [stream permissions](/help/stream-permissions) model allows
|
|
|
|
access to the full history of public streams and [private streams with
|
|
|
|
shared history](/help/stream-permissions), including messages sent
|
|
|
|
before you joined the stream (or organization) or those sent to public
|
|
|
|
streams you are not subscribed to.
|
|
|
|
|
2020-03-03 14:11:13 +01:00
|
|
|
By default, Zulip searches messages in your history, i.e. the
|
2019-12-11 03:35:03 +01:00
|
|
|
messages you actually received. This avoids cluttering search results
|
|
|
|
with irrelevant messages from public streams you're not interested in.
|
|
|
|
|
|
|
|
If you'd like to instead search the organization's shared history, any
|
|
|
|
query using the `stream:` or `streams:` operators will search all
|
|
|
|
messages that you have access to in the selected stream(s). For
|
|
|
|
example:
|
|
|
|
|
|
|
|
* `streams:public keyword` searches for `keyword` in all public
|
|
|
|
streams in the organization.
|
|
|
|
* `streams:public sender:user@example.com` searches for all messages
|
|
|
|
sent by the user to any public stream.
|
|
|
|
|
2018-09-29 21:37:45 +02:00
|
|
|
## Words and phrases
|
|
|
|
|
|
|
|
Most searches consist of a list of operators followed by a list of keywords.
|
|
|
|
|
|
|
|
* `new logo`: Search for messages with both `new` and `logo`.
|
|
|
|
* `"new logo"`: Search for messages with the phrase `"new logo"`.
|
|
|
|
|
|
|
|
Zulip does some basic stemming, so `wave` will match `waves` and
|
|
|
|
`waving`. Keywords are case-insensitive, so `wave` will also match `Wave`.
|
|
|
|
|
|
|
|
Emoji are included in searches, so if you search for `octopus` it will
|
|
|
|
include messages with
|
|
|
|
<img src="/static/generated/emoji/images-google-64/1f419.png" alt="octopus"
|
|
|
|
class="emoji-small"/>.
|
|
|
|
|
|
|
|
|
|
|
|
Note that Zulip ignores common words like `a`, `the`, and about 100
|
|
|
|
others. A quirk in Zulip's current implementation means that if all of your
|
|
|
|
keywords are ignored, we'll return 0 search results.
|
2022-07-07 07:48:41 +02:00
|
|
|
|
|
|
|
## Related articles
|
|
|
|
|
|
|
|
* [Configure multi-language search](/help/configure-multi-language-search)
|