]> git.cworth.org Git - notmuch-wiki/blobdiff - manpages/notmuch-search-terms-7.mdwn
manpages updates for release 0.29
[notmuch-wiki] / manpages / notmuch-search-terms-7.mdwn
index e4058119ede883288b345efce4d6fd7698e93aa9..e46c6b5e9d024f942e882bb74d8b954da719a911 100644 (file)
@@ -9,9 +9,11 @@
 <pre>
        <b>notmuch</b> <b>count</b> [option ...] &lt;<u>search-term</u>&gt; ...
 
-       <b>notmuch</b>  <b>dump</b>  [--format=(batch-tag|sup)]  [--]  [--output=&lt;<u>file</u>&gt;] [--]
+       <b>notmuch</b> <b>dump</b> [--gzip] [--format=(batch-tag|sup)] [--output=&lt;<u>file</u>&gt;] [--]
        [&lt;<u>search-term</u>&gt; ...]
 
+       <b>notmuch</b> <b>reindex</b> [option ...] &lt;<u>search-term</u>&gt; ...
+
        <b>notmuch</b> <b>search</b> [option ...] &lt;<u>search-term</u>&gt; ...
 
        <b>notmuch</b> <b>show</b> [option ...] &lt;<u>search-term</u>&gt; ...
 
        As  a  special  case,  a  search  string consisting of exactly a single
        asterisk (&quot;*&quot;) will match all messages.
+</pre>
 
+<h3> &nbsp; Search prefixes</h3>
+<pre>
        In addition to free text, the following prefixes can be used  to  force
        terms to match against specific portions of an email, (where &lt;brackets&gt;
-       indicate user-supplied values):
-
-       · from:&lt;name-or-address&gt;
-
-       · to:&lt;name-or-address&gt;
-
-       · subject:&lt;word-or-quoted-phrase&gt;
-
-       · attachment:&lt;word&gt;
-
-       · mimetype:&lt;word&gt;
-
-       · tag:&lt;tag&gt; (or is:&lt;tag&gt;)
-
-       · id:&lt;message-id&gt;
-
-       · thread:&lt;thread-id&gt;
-
-       · folder:&lt;maildir-folder&gt;
-
-       · path:&lt;directory-path&gt; or path:&lt;directory-path&gt;/**
-
-       · date:&lt;since&gt;..&lt;until&gt;
-
-       The <b>from:</b> prefix is used to match the name or address of the sender  of
-       an email message.
-
-       The <b>to:</b> prefix is used to match the names or addresses of any recipient
-       of an email message, (whether To, Cc, or Bcc).
-
-       Any term prefixed with <b>subject:</b> 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 <b>sub-</b>
-       <b>ject:</b>.
-
-       The <b>attachment:</b> prefix can be used to search for specific filenames (or
-       extensions) of attachments to email messages.
-
-       The <b>mimetype:</b> prefix will be used to match text from the  content-types
-       of MIME parts within email messages (as specified by the sender).
-
-       For  <b>tag:</b>  and <b>is:</b> valid tag values include <b>inbox</b> and <b>unread</b> by default
-       for new messages added by <b>notmuch</b> <b>new</b> as well as any other  tag  values
-       added manually with <b>notmuch</b> <b>tag</b>.
-
-       For  <b>id:</b>, message ID values are the literal contents of the Message-ID:
-       header of email messages, but without the &apos;&lt;&apos;, &apos;&gt;&apos; delimiters.
-
-       The <b>thread:</b> prefix can be used with the thread ID values that are  gen‐
-       erated  internally  by  notmuch  (and do not appear in email messages).
-       These thread ID values can be seen in the first column of  output  from
-       <b>notmuch</b> <b>search</b>
-
-       The  <b>path:</b>  prefix  searches  for email messages that are in particular
-       directories within the mail store. The directory must be specified rel‐
-       ative  to  the  top-level  maildir  (and without the leading slash). By
-       default, <b>path:</b> matches messages in the specified  directory  only.  The
-       &quot;/**&quot;  suffix  can be used to match messages in the specified directory
-       and all its subdirectories recursively.  <b>path:&quot;&quot;</b>  matches  messages  in
-       the root of the mail store and, likewise, <b>path:**</b> matches all messages.
-
-       The <b>folder:</b> prefix searches for email messages by maildir or MH folder.
-       For MH-style folders, this is equivalent to <b>path:</b>.  For  maildir,  this
-       includes messages in the &quot;new&quot; and &quot;cur&quot; subdirectories. The exact syn‐
-       tax for  maildir  folders  depends  on  your  mail  configuration.  For
-       maildir++,  <b>folder:&quot;&quot;</b>  matches  the  inbox folder (which is the root in
-       maildir++), other folder names always start with &quot;.&quot;, and nested  fold‐
-       ers  are separated by &quot;.&quot;s, such as <b>folder:.classes.topology</b>. For &quot;file
-       system&quot; maildir, the inbox is typically <b>folder:INBOX</b> and nested folders
-       are separated by slashes, such as <b>folder:classes/topology</b>.
-
-       Both  <b>path:</b> and <b>folder:</b> will find a message if <u>any</u> copy of that message
-       is in the specific directory/folder.
-
-       The <b>date:</b> prefix can be used to restrict the results to  only  messages
-       within a particular time range (based on the Date: header) with a range
-       syntax of:
-
-       date:&lt;since&gt;..&lt;until&gt;
-
-       See <b>DATE</b> <b>AND</b> <b>TIME</b> <b>SEARCH</b> below for details on the range expression, and
-       supported syntax for &lt;since&gt; and &lt;until&gt; date and time expressions.
-
-       The time range can also be specified using timestamps with a syntax of:
-
-       &lt;initial-timestamp&gt;..&lt;final-timestamp&gt;
-
-       Each  timestamp  is  a  number representing the number of seconds since
-       1970-01-01 00:00:00 UTC.
+       indicate user-supplied values).
+
+       If notmuch is built with <b>Xapian</b> <b>Field</b> <b>Processors</b> (see  below)  some  of
+       the  prefixes  with  &lt;regex&gt;  forms  can  be  also used to restrict the
+       results  to  those  whose  value  matches  a  regular  expression  (see
+       <b>regex</b>(7)) delimited with //, for example:
+
+          notmuch search &apos;from:&quot;/bob@.*[.]example[.]com/&quot;&apos;
+
+       <b>body:&lt;word-or-quoted-phrase&gt;</b>
+              Match terms in the body of messages.
+
+       <b>from:&lt;name-or-address&gt;</b> <b>or</b> <b>from:/&lt;regex&gt;/</b>
+              The  <b>from:</b>  prefix  is  used to match the name or address of the
+              sender of an email message.
+
+       <b>to:&lt;name-or-address&gt;</b>
+              The <b>to:</b> prefix is used to match the names or  addresses  of  any
+              recipient of an email message, (whether To, Cc, or Bcc).
+
+       <b>subject:&lt;word-or-quoted-phrase&gt;</b> <b>or</b> <b>subject:/&lt;regex&gt;/</b>
+              Any  term  prefixed  with <b>subject:</b> 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, imme‐
+              diately following <b>subject:</b>.
+
+       <b>attachment:&lt;word&gt;</b>
+              The <b>attachment:</b> prefix can be used to search for specific  file‐
+              names (or extensions) of attachments to email messages.
+
+       <b>mimetype:&lt;word&gt;</b>
+              The  <b>mimetype:</b>  prefix  will be used to match text from the con‐
+              tent-types of MIME parts within email messages (as specified  by
+              the sender).
+
+       <b>tag:&lt;tag&gt;</b> <b>or</b> <b>tag:/&lt;regex&gt;/</b> <b>or</b> <b>is:&lt;tag&gt;</b> <b>or</b> <b>is:/&lt;regex&gt;/</b>
+              For  <b>tag:</b>  and  <b>is:</b> valid tag values include <b>inbox</b> and <b>unread</b> by
+              default for new messages added by <b>notmuch</b> <b>new</b>  as  well  as  any
+              other tag values added manually with <b>notmuch</b> <b>tag</b>.
+
+       <b>id:&lt;message-id&gt;</b> <b>or</b> <b>mid:&lt;message-id&gt;</b> <b>or</b> <b>mid:/&lt;regex&gt;/</b>
+              For  <b>id:</b> and <b>mid:</b>, message ID values are the literal contents of
+              the Message-ID: header of email messages, but without  the  &apos;&lt;&apos;,
+              &apos;&gt;&apos; delimiters.
+
+       <b>thread:&lt;thread-id&gt;</b>
+              The  <b>thread:</b>  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 col‐
+              umn of output from <b>notmuch</b> <b>search</b>
+
+       <b>thread:{&lt;notmuch</b> <b>query&gt;}</b>
+              If notmuch is built with <b>Xapian</b> <b>Field</b>  <b>Processors</b>  (see  below),
+              threads may be searched for indirectly by providing an arbitrary
+              notmuch query in <b>{}</b>. For example, the following returns  threads
+              containing  a  message from mallory and one (not necessarily the
+              same message) with Subject containing the word &quot;crypto&quot;.
+
+                 % notmuch search &apos;thread:&quot;{from:mallory}&quot; and thread:&quot;{subject:crypto}&quot;&apos;
+
+              The performance of such queries can vary wildly.  To  understand
+              this, the user should think of the query <b>thread:{&lt;something&gt;}</b> as
+              expanding to all of the thread IDs which match <b>&lt;something&gt;</b>; not‐
+              much then performs a second search using the expanded query.
+
+       <b>path:&lt;directory-path&gt;</b> <b>or</b> <b>path:&lt;directory-path&gt;/**</b> <b>or</b> <b>path:/&lt;regex&gt;/</b>
+              The <b>path:</b> prefix searches for email messages that are in partic‐
+              ular directories within the mail store. The  directory  must  be
+              specified  relative  to  the  top-level maildir (and without the
+              leading slash). By default, <b>path:</b> matches messages in the speci‐
+              fied  directory only. The &quot;/**&quot; suffix can be used to match mes‐
+              sages in the specified  directory  and  all  its  subdirectories
+              recursively.  <b>path:&quot;&quot;</b>  matches  messages in the root of the mail
+              store and, likewise, <b>path:**</b> matches all messages.
+
+              <b>path:</b> will find a message if <u>any</u> copy of that message is in  the
+              specific directory.
+
+       <b>folder:&lt;maildir-folder&gt;</b> <b>or</b> <b>folder:/&lt;regex&gt;/</b>
+              The  <b>folder:</b> prefix searches for email messages by maildir or MH
+              folder. For MH-style folders, this is equivalent to  <b>path:</b>.  For
+              maildir, this includes messages in the &quot;new&quot; and &quot;cur&quot; subdirec‐
+              tories. The exact syntax for maildir  folders  depends  on  your
+              mail  configuration.  For maildir++, <b>folder:&quot;&quot;</b> matches the inbox
+              folder (which is the root  in  maildir++),  other  folder  names
+              always start with &quot;.&quot;, and nested folders are separated by &quot;.&quot;s,
+              such as <b>folder:.classes.topology</b>. For &quot;file system&quot; maildir, the
+              inbox is typically <b>folder:INBOX</b> and nested folders are separated
+              by slashes, such as <b>folder:classes/topology</b>.
+
+              <b>folder:</b> will find a message if <u>any</u> copy of that  message  is  in
+              the specific folder.
+
+       <b>date:&lt;since&gt;..&lt;until&gt;</b> <b>or</b> <b>date:&lt;date&gt;</b>
+              The  <b>date:</b>  prefix  can  be used to restrict the results to only
+              messages within a particular time  range  (based  on  the  Date:
+              header).
+
+              See  <b>DATE</b> <b>AND</b> <b>TIME</b> <b>SEARCH</b> below for details on the range expres‐
+              sion, and supported syntax for &lt;since&gt; and &lt;until&gt; date and time
+              expressions.
+
+              The  time  range  can also be specified using timestamps without
+              including the date prefix using a syntax of:
+
+              &lt;initial-timestamp&gt;..&lt;final-timestamp&gt;
+
+              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.
+
+       <b>lastmod:&lt;initial-revision&gt;..&lt;final-revision&gt;</b>
+              The <b>lastmod:</b> 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 <b>--uuid</b> argument to <b>notmuch</b> <b>search</b>
+              to find messages that have changed since an earlier query.
+
+       <b>query:&lt;name&gt;</b>
+              The <b>query:</b> prefix allows queries to refer  to  previously  saved
+              queries  added  with  <a href='../notmuch-config-1/'>notmuch-config</a>(1).  Named queries are only
+              available if notmuch is built with <b>Xapian</b> <b>Field</b> <b>Processors</b>  (see
+              below).
+
+       <b>property:&lt;key&gt;=&lt;value&gt;</b>
+              The  <b>property:</b>  prefix  searches  for messages with a particular
+              &lt;key&gt;=&lt;value&gt; 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 <a href='../notmuch-properties-7/'>notmuch-properties</a>(7) for more details.
+
+       User  defined  prefixes  are  also supported, see <a href='../notmuch-config-1/'>notmuch-config</a>(1) for
+       details.
 </pre>
 
 <h3> &nbsp; Operators</h3>
 <pre>
        Xapian  (and  hence  notmuch)  prefixes  are either <b>boolean</b>, supporting
        exact matches like &quot;<u>tag:inbox</u>&quot;  or  <b>probabilistic</b>,  supporting  a  more
-       flexible <b>term</b> based searching. The prefixes currently supported by not‐
-       much are as follows.
-
-              ┌───────────────────────────┬────────────────────────────┐
-              │Boolean
-              ├───────────────────────────┼────────────────────────────┤
-              │
-              │
-              │       <b>thread:</b>     <b>folder:</b> │        <b>subject:</b>    <b>attach‐</b> │
-              │       <b>path:</b>               │        <b>ment:</b> <b>mimetype:</b>     │
-              └───────────────────────────┴────────────────────────────┘
+       flexible  <b>term</b>  based searching. Certain <b>special</b> prefixes are processed
+       by notmuch in a way not strictly fitting either of  Xapian&apos;s  built  in
+       styles. The prefixes currently supported by notmuch are as follows.
+
+       <b>Boolean</b>
+              <b>tag:</b>, <b>id:</b>, <b>thread:</b>, <b>folder:</b>, <b>path:</b>, <b>property:</b>
+
+       <b>Probabilistic</b>
+              <b>body:</b>, <b>to:</b>, <b>attachment:</b>, <b>mimetype:</b>
+
+       <b>Special</b>
+              <b>from:</b>, <b>query:</b>, <b>subject:</b>
 </pre>
 
 <h3> &nbsp; Terms and phrases</h3>
 <pre>
-       In general Xapian distinguishes between lists  of  terms  and  <b>phrases</b>.
+       In  general  Xapian  distinguishes  between lists of terms and <b>phrases</b>.
        Phrases are indicated by double quotes (but beware you probably need to
-       protect those from your shell) and insist that  those  unstemmed  words
-       occur  in  that  order. One useful, but initially surprising feature is
-       that the following are equivalant ways to write the same phrase.
+       protect  those  from  your shell) and insist that those unstemmed words
+       occur in that order. One useful, but initially  surprising  feature  is
+       that the following are equivalent ways to write the same phrase.
 
        · &quot;a list of words&quot;
 
        · a.list.of.words
 
        Both parenthesised lists of terms and quoted phrases are ok with proba‐
-       bilisitic prefixes such as <b>to:</b>, <b>from:</b>, and <b>subject:</b>. In particular
+       bilistic prefixes such as <b>to:</b>, <b>from:</b>, and <b>subject:</b>. In particular
 
           subject:(pizza free)
 
        will not.
 </pre>
 
+<h3> &nbsp; Quoting</h3>
+<pre>
+       Double quotes are also used by the  notmuch  query  parser  to  protect
+       boolean  terms, regular expressions, or subqueries containing spaces or
+       other special characters, e.g.
+
+          tag:&quot;a tag&quot;
+
+          folder:&quot;/^.*/(Junk|Spam)$/&quot;
+
+          thread:&quot;{from:mallory and date:2009}&quot;
+
+       As with phrases, you need to protect the double quotes from  the  shell
+       e.g.
+
+          % notmuch search &apos;folder:&quot;/^.*/(Junk|Spam)$/&quot;&apos;
+          % notmuch search &apos;thread:&quot;{from:mallory and date:2009}&quot; and thread:{to:mallory}&apos;
+</pre>
+
 <h2>DATE AND TIME SEARCH</h2>
 <pre>
        notmuch  understands a variety of standard and natural ways of express‐
        could describe (the end of yesterday). Similarly,  date:january..febru‐
        ary matches from the beginning of January to the end of February.
 
+       If  specifying  a  time  range using timestamps in conjunction with the
+       date prefix, each timestamp must be preceded by @ (ASCII  hex  40).  As
+       above,  each  timestamp  is a number representing the number of seconds
+       since 1970-01-01 00:00:00 UTC. For example:
+          date:@&lt;initial-timestamp&gt;..@&lt;final-timestamp&gt;
+
+       date:&lt;expr&gt;..! can be used as a shorthand for date:&lt;expr&gt;..&lt;expr&gt;.  The
+       expansion  takes  place  before  interpretation, and thus, for example,
+       date:monday..! matches from the beginning of Monday until  the  end  of
+       Monday.   With  <b>Xapian</b>  <b>Field</b>  <b>Processor</b> support (see below), non-range
+       date queries such as date:yesterday will work, but otherwise will  give
+       unexpected results; if in doubt use date:yesterday..!
+
        Currently,  we  do  not  support  spaces  in range expressions. You can
        replace the spaces with &apos;_&apos;, or (in most cases) &apos;-&apos;, or (in some cases)
        leave  the  spaces out altogether. Examples in this man page use spaces
        ble  to specify date:..&lt;until&gt; or date:&lt;since&gt;.. to not limit the start
        or end time, respectively. Pre-1.2.1 Xapian does not report an error on
        open ended ranges, but it does not work as expected either.
-
-       Entering  date:expr  without  &quot;..&quot;  (for  example date:yesterday) won&apos;t
-       work, as it&apos;s not interpreted as a range expression  at  all.  You  can
-       achieve  the expected result by duplicating the expr both sides of &quot;..&quot;
-       (for example date:yesterday..yesterday).
 </pre>
 
 <h3> &nbsp; Relative date and time</h3>
 
        All refer to past, can be repeated and will be accumulated.
 
-       Units  can  be  abbreviated to any length, with the otherwise ambiguous
+       Units can be abbreviated to any length, with  the  otherwise  ambiguous
        single m being m for minutes and M for months.
 
-       Number can also be written out one,  two,  ...,  ten,  dozen,  hundred.
+       Number  can  also  be  written  out one, two, ..., ten, dozen, hundred.
        Additionally, the unit may be preceded by &quot;last&quot; or &quot;this&quot; (e.g., &quot;last
        week&quot; or &quot;this month&quot;).
 
-       When combined with absolute date and time, the relative date  and  time
-       specification  will  be  relative  from the specified absolute date and
+       When  combined  with absolute date and time, the relative date and time
+       specification will be relative from the  specified  absolute  date  and
        time.
 
        Examples: 5M2d, two weeks
        Some time zone codes, e.g. UTC, EET.
 </pre>
 
+<h2>XAPIAN FIELD PROCESSORS</h2>
+<pre>
+       Certain  optional  features  of the notmuch query processor rely on the
+       presence of the Xapian field processor API. You can determine  if  your
+       notmuch  was  built  against a sufficiently recent version of Xapian by
+       running
+
+          % notmuch config get built_with.field_processor
+
+       Currently the following features require field processor support:
+
+       · non-range date queries, e.g. &quot;date:today&quot;
+
+       · named queries e.g. &quot;query:my_special_query&quot;
+
+       · regular expression searches, e.g. &quot;subject:/^\[SPAM\]/&quot;
+
+       · thread subqueries, e.g. &quot;thread:{from:bob}&quot;
+</pre>
+
 <h2>SEE ALSO</h2>
 <pre>
        <a href='../notmuch-1/'>notmuch</a>(1), <a href='../notmuch-config-1/'>notmuch-config</a>(1), <a href='../notmuch-count-1/'>notmuch-count</a>(1), <a href='../notmuch-dump-1/'>notmuch-dump</a>(1),  <a href='../notmuch-hooks-5/'>not‐</a>
-       <a href='../notmuch-hooks-5/'>much-hooks</a>(5),   <a href='../notmuch-insert-1/'>notmuch-insert</a>(1),  <a href='../notmuch-new-1/'>notmuch-new</a>(1),  <a href='../notmuch-reply-1/'>notmuch-reply</a>(1),
-       <a href='../notmuch-restore-1/'>notmuch-restore</a>(1), <a href='../notmuch-search-1/'>notmuch-search</a>(1), <a href='../notmuch-show-1/'>notmuch-show</a>(1), <a href='../notmuch-tag-1/'>notmuch-tag</a>(1)
+       <a href='../notmuch-hooks-5/'>much-hooks</a>(5),  <a href='../notmuch-insert-1/'>notmuch-insert</a>(1),  <a href='../notmuch-new-1/'>notmuch-new</a>(1), <a href='../notmuch-reindex-1/'>notmuch-reindex</a>(1),
+       <b>notmuch-properties</b>(1),  <b>*notmuch-reply</b>(1),   <a href='../notmuch-restore-1/'>notmuch-restore</a>(1),   <a href='../notmuch-search-1/'>not‐</a>
+       <a href='../notmuch-search-1/'>much-search</a>(1), <b>*notmuch-show</b>(1), <a href='../notmuch-tag-1/'>notmuch-tag</a>(1)
 </pre>
 
 <h2>AUTHOR</h2>
 
 <h2>COPYRIGHT</h2>
 <pre>
-       2014, Carl Worth and many others
+       2009-2019, Carl Worth and many others
 </pre>
 
-<h2>0.20.1</h2>
+<h2>0.29</h2>