X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=doc%2Fman7%2Fnotmuch-sexp-queries.rst;h=6e68fcc3d87dbc3e90be585576cbbe7fb6125a2f;hb=8322f536f5d304cc10caa2e061a36df0aa1996c4;hp=08e97cc3b29579d469a10a435937c03ff957e07d;hpb=200e164dc7acc3f19c6fe39164c472985e1ba384;p=notmuch diff --git a/doc/man7/notmuch-sexp-queries.rst b/doc/man7/notmuch-sexp-queries.rst index 08e97cc3..6e68fcc3 100644 --- a/doc/man7/notmuch-sexp-queries.rst +++ b/doc/man7/notmuch-sexp-queries.rst @@ -40,10 +40,12 @@ subqueries. Match all messages. *term* - Match all messages containing *term*, possibly after - stemming or phase splitting. For discussion of stemming in - notmuch see :any:`notmuch-search-terms(7)`. Stemming only applies - to unquoted terms (basic values) in s-expression queries. + + Match all messages containing *term*, possibly after stemming or + phrase splitting. For discussion of stemming in notmuch see + :any:`notmuch-search-terms(7)`. Stemming only applies to unquoted + terms (basic values) in s-expression queries. For information on + phrase splitting see :any:`fields`. ``(`` *field* |q1| |q2| ... |qn| ``)`` Restrict the queries |q1| to |qn| to *field*, and combine with *and* @@ -63,7 +65,7 @@ subqueries. FIELDS `````` -*Fields* (also called *prefixes* in notmuch documentation) +*Fields* [#aka-pref]_ correspond to attributes of mail messages. Some are inherent (and immutable) like ``subject``, while others ``tag`` and ``property`` are settable by the user. Each concrete field in @@ -72,6 +74,21 @@ is discussed further under "Search prefixes" in :any:`notmuch-search-terms(7)`. The row *user* refers to user defined fields, described in :any:`notmuch-config(1)`. +Most fields are either *phrase fields* [#aka-prob]_ (which match +sequences of words), or *term fields* [#aka-bool]_ (which match exact +strings). *Phrase splitting* breaks the term (basic value or quoted +string) into words, ignore punctuation. Phrase splitting is applied to +terms in phrase (probabilistic) fields. Both phrase splitting and +stemming apply only in phrase fields. + +Each term or phrase field has an associated combining operator +(``and`` or ``or``) used to combine the queries from each element of +the tail of the list. This is generally ``or`` for those fields where +a message has one such attribute, and ``and`` otherwise. + +Term or phrase fields can contain arbitrarily complex queries made up +from terms, operators, and modifiers, but not other fields. + .. _field-table: .. table:: Fields with supported modifiers @@ -103,7 +120,7 @@ fields, described in :any:`notmuch-config(1)`. +------------+-----------+-----------+-----------+-----------+----------+ | mimetype | or | phrase | yes | yes | no | +------------+-----------+-----------+-----------+-----------+----------+ - | path | or | term | yes | yes | yes | + | path | or | term | no | yes | yes | +------------+-----------+-----------+-----------+-----------+----------+ | property | and | term | yes | yes | yes | +------------+-----------+-----------+-----------+-----------+----------+ @@ -138,10 +155,31 @@ EXAMPLES ``(not Bob Marley)`` Match messages containing neither "Bob" nor "Marley", nor their stems, +``"quick fox"`` ``quick-fox`` ``quick@fox`` + Match the *phrase* "quick" followed by "fox" in phrase fields (or + outside a field). Match the literal string in a term field. + +``(id 1234@invalid blah@test)`` + Matches Message-Id "1234@invalid" *or* Message-Id "blah@test" + ``(subject quick "brown fox")`` Match messages whose subject contains "quick" (anywhere, stemmed) and the phrase "brown fox". +``(to (or bob@example.com mallory@example.org))`` ``(or (to bob@example.com) (to mallory@example.org))`` + Match in the "To" or "Cc" headers, "bob@example.com", + "mallory@example.org", and also "bob@example.com.au" since it + contains the adjacent triple "bob", "example", "com". + +NOTES +===== + +.. [#aka-pref] a.k.a. prefixes + +.. [#aka-prob] a.k.a. probabilistic prefixes + +.. [#aka-bool] a.k.a. boolean prefixes + .. |q1| replace:: :math:`q_1` .. |q2| replace:: :math:`q_2` .. |qn| replace:: :math:`q_n`