+indicate user-supplied values).
+
+Some of the prefixes with <regex> forms can be also used to restrict
+the results to those whose value matches a regular expression (see
+:manpage:`regex(7)`) delimited with //, for example::
+
+ notmuch search 'from:"/bob@.*[.]example[.]com/"'
+
+body:<word-or-quoted-phrase>
+ Match terms in the body of messages.
+
+from:<name-or-address> or from:/<regex>/
+ The **from:** prefix is used to match the name or address of
+ the sender of an email message.
+
+to:<name-or-address>
+ The **to:** prefix is used to match the names or addresses of any
+ recipient of an email message, (whether To, Cc, or Bcc).
+
+subject:<word-or-quoted-phrase> or subject:/<regex>/
+ Any term prefixed with **subject:** will match only text from the
+ subject of an email. Searching for a phrase in the subject is
+ supported by including quotation marks around the phrase,
+ immediately following **subject:**.
+
+attachment:<word>
+ The **attachment:** prefix can be used to search for specific
+ filenames (or extensions) of attachments to email messages.
+
+mimetype:<word>
+ The **mimetype:** prefix will be used to match text from the
+ content-types of MIME parts within email messages (as specified by
+ the sender).
+
+tag:<tag> or tag:/<regex>/ or is:<tag> or is:/<regex>/
+ For **tag:** and **is:** valid tag values include **inbox** and
+ **unread** by default for new messages added by
+ :any:`notmuch-new(1)` as well as any other tag values added
+ manually with :any:`notmuch-tag(1)`.
+
+id:<message-id> or mid:<message-id> or mid:/<regex>/
+ For **id:** and **mid:**, message ID values are the literal
+ contents of the Message-ID: header of email messages, but without
+ the '<', '>' delimiters.
+
+thread:<thread-id>
+ The **thread:** prefix can be used with the thread ID values that
+ are generated internally by notmuch (and do not appear in email
+ messages). These thread ID values can be seen in the first column
+ of output from :any:`notmuch-search(1)`
+
+thread:{<notmuch query>}
+ Threads may be searched for indirectly by providing an arbitrary
+ notmuch query in **{}**. For example, the following returns
+ threads containing a message from mallory and one (not necessarily
+ the same message) with Subject containing the word "crypto".
+
+ ::
+
+ % notmuch search 'thread:"{from:mallory}" and thread:"{subject:crypto}"'
+
+ The performance of such queries can vary wildly. To understand
+ this, the user should think of the query **thread:{<something>}**
+ as expanding to all of the thread IDs which match **<something>**;
+ notmuch then performs a second search using the expanded query.
+
+path:<directory-path> or path:<directory-path>/** or path:/<regex>/
+ The **path:** prefix searches for email messages that are in
+ particular directories within the mail store. The directory must
+ be specified relative to the top-level maildir (and without the
+ leading slash). By default, **path:** matches messages in the
+ specified directory only. The "/\*\*" suffix can be used to match
+ messages in the specified directory and all its subdirectories
+ recursively. **path:""** matches messages in the root of the mail
+ store and, likewise, **path:\*\*** matches all messages.
+
+ **path:** will find a message if *any* copy of that message is in
+ the specific directory.
+
+folder:<maildir-folder> or folder:/<regex>/
+ The **folder:** prefix searches for email messages by maildir or
+ MH folder. For MH-style folders, this is equivalent to
+ **path:**. For maildir, this includes messages in the "new" and
+ "cur" subdirectories. The exact syntax for maildir folders depends
+ on your mail configuration. For maildir++, **folder:""** matches
+ the inbox folder (which is the root in maildir++), other folder
+ names always start with ".", and nested folders are separated by
+ "."s, such as **folder:.classes.topology**. For "file system"
+ maildir, the inbox is typically **folder:INBOX** and nested
+ folders are separated by slashes, such as
+ **folder:classes/topology**.
+
+ **folder:** will find a message if *any* copy of that message is
+ in the specific folder.
+
+date:<since>..<until> or date:<date>
+ The **date:** prefix can be used to restrict the results to only
+ messages within a particular time range (based on the Date:
+ header).
+
+ See **DATE AND TIME SEARCH** below for details on the range
+ expression, and supported syntax for <since> and <until> date and
+ time expressions.
+
+ The time range can also be specified using timestamps without
+ including the date prefix using a syntax of:
+
+ <initial-timestamp>..<final-timestamp>
+
+ Each timestamp is a number representing the number of seconds
+ since 1970-01-01 00:00:00 UTC. Specifying a time range this way
+ is considered legacy and predates the date prefix.
+
+lastmod:<initial-revision>..<final-revision>
+ The **lastmod:** prefix can be used to restrict the result by the
+ database revision number of when messages were last modified (tags
+ were added/removed or filenames changed). This is usually used in
+ conjunction with the ``--uuid`` argument to
+ :any:`notmuch-search(1)` to find messages that have changed since
+ an earlier query.
+
+query:<name>
+ The **query:** prefix allows queries to refer to previously saved
+ queries added with :any:`notmuch-config(1)`.
+
+property:<key>=<value>
+ The **property:** prefix searches for messages with a particular
+ <key>=<value> property pair. Properties are used internally by
+ notmuch (and extensions) to add metadata to messages. A given key
+ can be present on a given message with several different values.
+ See :any:`notmuch-properties(7)` for more details.
+
+User defined prefixes are also supported, see :any:`notmuch-config(1)` for
+details.
+
+Operators
+---------
+
+In addition to individual terms, multiple terms can be combined with
+Boolean operators (**and**, **or**, **not**, and **xor**). Each term
+in the query will be implicitly connected by a logical AND if no
+explicit operator is provided (except that terms with a common prefix
+will be implicitly combined with OR). The shorthand '-<term>' can be
+used for 'not <term>' but unfortunately this does not work at the
+start of an expression. Parentheses can also be used to control the
+combination of the Boolean operators, but will have to be protected
+from interpretation by the shell, (such as by putting quotation marks
+around any parenthesized expression).