]> git.cworth.org Git - notmuch-wiki/blob - manpages/notmuch-search-terms-7.mdwn
manpages (0.21) update
[notmuch-wiki] / manpages / notmuch-search-terms-7.mdwn
1 <h1>NOTMUCH-SEARCH-TERMS(7)</h1>
2
3 <h2>NAME</h2>
4 <pre>
5        notmuch-search-terms - syntax for notmuch queries
6 </pre>
7
8 <h2>SYNOPSIS</h2>
9 <pre>
10        <b>notmuch</b> <b>count</b> [option ...] &lt;<u>search-term</u>&gt; ...
11
12        <b>notmuch</b>  <b>dump</b>  [--format=(batch-tag|sup)]  [--]  [--output=&lt;<u>file</u>&gt;] [--]
13        [&lt;<u>search-term</u>&gt; ...]
14
15        <b>notmuch</b> <b>search</b> [option ...] &lt;<u>search-term</u>&gt; ...
16
17        <b>notmuch</b> <b>show</b> [option ...] &lt;<u>search-term</u>&gt; ...
18
19        <b>notmuch</b> <b>tag</b> +&lt;<u>tag</u>&gt; ... -&lt;<u>tag</u>&gt; [--] &lt;<u>search-term</u>&gt; ...
20 </pre>
21
22 <h2>DESCRIPTION</h2>
23 <pre>
24        Several notmuch commands accept a common syntax for search terms.
25
26        The search terms can consist of free-form  text  (and  quoted  phrases)
27        which   will   match  all  messages  that  contain  all  of  the  given
28        terms/phrases in the body, the subject, or any of the sender or recipi‐
29        ent headers.
30
31        As  a  special  case,  a  search  string consisting of exactly a single
32        asterisk (&quot;*&quot;) will match all messages.
33
34        In addition to free text, the following prefixes can be used  to  force
35        terms to match against specific portions of an email, (where &lt;brackets&gt;
36        indicate user-supplied values):
37
38        · from:&lt;name-or-address&gt;
39
40        · to:&lt;name-or-address&gt;
41
42        · subject:&lt;word-or-quoted-phrase&gt;
43
44        · attachment:&lt;word&gt;
45
46        · mimetype:&lt;word&gt;
47
48        · tag:&lt;tag&gt; (or is:&lt;tag&gt;)
49
50        · id:&lt;message-id&gt;
51
52        · thread:&lt;thread-id&gt;
53
54        · folder:&lt;maildir-folder&gt;
55
56        · path:&lt;directory-path&gt; or path:&lt;directory-path&gt;/**
57
58        · date:&lt;since&gt;..&lt;until&gt;
59
60        · lastmod:&lt;initial-revision&gt;..&lt;final-revision&gt;
61
62        The <b>from:</b> prefix is used to match the name or address of the sender  of
63        an email message.
64
65        The <b>to:</b> prefix is used to match the names or addresses of any recipient
66        of an email message, (whether To, Cc, or Bcc).
67
68        Any term prefixed with <b>subject:</b> will match only text from  the  subject
69        of  an  email.  Searching  for  a phrase in the subject is supported by
70        including quotation marks around the phrase, immediately following <b>sub-</b>
71        <b>ject:</b>.
72
73        The <b>attachment:</b> prefix can be used to search for specific filenames (or
74        extensions) of attachments to email messages.
75
76        The <b>mimetype:</b> prefix will be used to match text from the  content-types
77        of MIME parts within email messages (as specified by the sender).
78
79        For  <b>tag:</b>  and <b>is:</b> valid tag values include <b>inbox</b> and <b>unread</b> by default
80        for new messages added by <b>notmuch</b> <b>new</b> as well as any other  tag  values
81        added manually with <b>notmuch</b> <b>tag</b>.
82
83        For  <b>id:</b>, message ID values are the literal contents of the Message-ID:
84        header of email messages, but without the &apos;&lt;&apos;, &apos;&gt;&apos; delimiters.
85
86        The <b>thread:</b> prefix can be used with the thread ID values that are  gen‐
87        erated  internally  by  notmuch  (and do not appear in email messages).
88        These thread ID values can be seen in the first column of  output  from
89        <b>notmuch</b> <b>search</b>
90
91        The  <b>path:</b>  prefix  searches  for email messages that are in particular
92        directories within the mail store. The directory must be specified rel‐
93        ative  to  the  top-level  maildir  (and without the leading slash). By
94        default, <b>path:</b> matches messages in the specified  directory  only.  The
95        &quot;/**&quot;  suffix  can be used to match messages in the specified directory
96        and all its subdirectories recursively.  <b>path:&quot;&quot;</b>  matches  messages  in
97        the root of the mail store and, likewise, <b>path:**</b> matches all messages.
98
99        The <b>folder:</b> prefix searches for email messages by maildir or MH folder.
100        For MH-style folders, this is equivalent to <b>path:</b>.  For  maildir,  this
101        includes messages in the &quot;new&quot; and &quot;cur&quot; subdirectories. The exact syn‐
102        tax for  maildir  folders  depends  on  your  mail  configuration.  For
103        maildir++,  <b>folder:&quot;&quot;</b>  matches  the  inbox folder (which is the root in
104        maildir++), other folder names always start with &quot;.&quot;, and nested  fold‐
105        ers  are separated by &quot;.&quot;s, such as <b>folder:.classes.topology</b>. For &quot;file
106        system&quot; maildir, the inbox is typically <b>folder:INBOX</b> and nested folders
107        are separated by slashes, such as <b>folder:classes/topology</b>.
108
109        Both  <b>path:</b> and <b>folder:</b> will find a message if <u>any</u> copy of that message
110        is in the specific directory/folder.
111
112        The <b>date:</b> prefix can be used to restrict the results to  only  messages
113        within a particular time range (based on the Date: header) with a range
114        syntax of:
115
116        date:&lt;since&gt;..&lt;until&gt;
117
118        See <b>DATE</b> <b>AND</b> <b>TIME</b> <b>SEARCH</b> below for details on the range expression, and
119        supported syntax for &lt;since&gt; and &lt;until&gt; date and time expressions.
120
121        The time range can also be specified using timestamps with a syntax of:
122
123        &lt;initial-timestamp&gt;..&lt;final-timestamp&gt;
124
125        Each  timestamp  is  a  number representing the number of seconds since
126        1970-01-01 00:00:00 UTC.
127
128        The <b>lastmod:</b> prefix can be used to restrict the result by the  database
129        revision  number  of  when  messages  were  last  modified  (tags  were
130        added/removed or filenames changed).  This is usually used in  conjunc‐
131        tion  with  the <b>--uuid</b> argument to <b>notmuch</b> <b>search</b> to find messages that
132        have changed since an earlier query.
133 </pre>
134
135 <h3> &nbsp; Operators</h3>
136 <pre>
137        In addition to individual terms, multiple terms can  be  combined  with
138        Boolean  operators (<b>and</b>, <b>or</b>, <b>not</b>, and <b>xor</b>). Each term in the query will
139        be implicitly connected by a logical AND if  no  explicit  operator  is
140        provided  (except  that  terms  with a common prefix will be implicitly
141        combined with OR).  The  shorthand  &apos;-&lt;term&gt;&apos;  can  be  used  for  &apos;not
142        &lt;term&gt;&apos; but unfortunately this does not work at the start of an expres‐
143        sion.  Parentheses can also be used to control the combination  of  the
144        Boolean operators, but will have to be protected from interpretation by
145        the shell, (such as by putting quotation marks around any parenthesized
146        expression).
147
148        In  addition to the standard boolean operators, Xapian provides several
149        operators specific to text searching.
150
151           notmuch search term1 NEAR term2
152
153        will return results where term1  is  within  10  words  of  term2.  The
154        threshold can be set like this:
155
156           notmuch search term1 NEAR/2 term2
157
158        The search
159
160           notmuch search term1 ADJ term2
161
162        will return results where term1 is within 10 words of term2, but in the
163        same order as in the query. The threshold can be set the same  as  with
164        NEAR:
165
166           notmuch search term1 ADJ/7 term2
167 </pre>
168
169 <h3> &nbsp; Stemming</h3>
170 <pre>
171        <b>Stemming</b> in notmuch means that these searches
172
173           notmuch search detailed
174           notmuch search details
175           notmuch search detail
176
177        will  all  return identical results, because Xapian first &quot;reduces&quot; the
178        term to the common stem (here &apos;detail&apos;) and then performs the search.
179
180        There are two ways to turn this off: a search for  a  capitalized  word
181        will  be performed unstemmed, so that one can search for &quot;John&quot; and not
182        get results for &quot;Johnson&quot;; phrase  searches  are  also  unstemmed  (see
183        below  for details).  Stemming is currently only supported for English.
184        Searches for words in other languages will be performed unstemmed.
185 </pre>
186
187 <h3> &nbsp; Wildcards</h3>
188 <pre>
189        It is possible to use a trailing  &apos;*&apos;  as  a  wildcard.  A  search  for
190        &apos;wildc*&apos; will match &apos;wildcard&apos;, &apos;wildcat&apos;, etc.
191 </pre>
192
193 <h3> &nbsp; Boolean and Probabilistic Prefixes</h3>
194 <pre>
195        Xapian  (and  hence  notmuch)  prefixes  are either <b>boolean</b>, supporting
196        exact matches like &quot;<u>tag:inbox</u>&quot;  or  <b>probabilistic</b>,  supporting  a  more
197        flexible <b>term</b> based searching. The prefixes currently supported by not‐
198        much are as follows.
199
200               ┌───────────────────────────┬────────────────────────────┐
201               │Boolean
202               ├───────────────────────────┼────────────────────────────┤
203               │
204               │
205               │       <b>thread:</b>     <b>folder:</b> │        <b>subject:</b>    <b>attach‐</b> │
206               │       <b>path:</b>               │        <b>ment:</b> <b>mimetype:</b>     │
207               └───────────────────────────┴────────────────────────────┘
208 </pre>
209
210 <h3> &nbsp; Terms and phrases</h3>
211 <pre>
212        In general Xapian distinguishes between lists  of  terms  and  <b>phrases</b>.
213        Phrases are indicated by double quotes (but beware you probably need to
214        protect those from your shell) and insist that  those  unstemmed  words
215        occur  in  that  order. One useful, but initially surprising feature is
216        that the following are equivalant ways to write the same phrase.
217
218        · &quot;a list of words&quot;
219
220        · a-list-of-words
221
222        · a/list/of/words
223
224        · a.list.of.words
225
226        Both parenthesised lists of terms and quoted phrases are ok with proba‐
227        bilisitic prefixes such as <b>to:</b>, <b>from:</b>, and <b>subject:</b>. In particular
228
229           subject:(pizza free)
230
231        is equivalent to
232
233           subject:pizza and subject:free
234
235        Both of these will match a subject &quot;Free Delicious Pizza&quot; while
236
237           subject:&quot;pizza free&quot;
238
239        will not.
240 </pre>
241
242 <h2>DATE AND TIME SEARCH</h2>
243 <pre>
244        notmuch  understands a variety of standard and natural ways of express‐
245        ing dates and times, both in absolute terms (&quot;2012-10-24&quot;) and in rela‐
246        tive  terms (&quot;yesterday&quot;). Any number of relative terms can be combined
247        (&quot;1 hour 25 minutes&quot;) and an absolute date/time can  be  combined  with
248        relative  terms  to  further adjust it. A non-exhaustive description of
249        the syntax supported for absolute and relative terms is given below.
250 </pre>
251
252 <h3> &nbsp; The range expression</h3>
253 <pre>
254        date:&lt;since&gt;..&lt;until&gt;
255
256        The above expression  restricts  the  results  to  only  messages  from
257        &lt;since&gt; to &lt;until&gt;, based on the Date: header.
258
259        &lt;since&gt;  and &lt;until&gt; can describe imprecise times, such as &quot;yesterday&quot;.
260        In this case, &lt;since&gt; is taken as the earliest time it  could  describe
261        (the beginning of yesterday) and &lt;until&gt; is taken as the latest time it
262        could describe (the end of yesterday). Similarly,  date:january..febru‐
263        ary matches from the beginning of January to the end of February.
264
265        date:&lt;expr&gt;..!  can be used as a shorthand for date:&lt;expr&gt;..&lt;expr&gt;. The
266        expansion takes place before interpretation,  and  thus,  for  example,
267        date:monday..!  matches  from  the beginning of Monday until the end of
268        Monday. (Note that  entering  date:&lt;expr&gt;  without  &quot;..&quot;,  for  example
269        date:yesterday,  won&apos;t work, as it&apos;s not interpreted as a range expres‐
270        sion at all. Again, use date:yesterday..!)
271
272        Currently, we do not support  spaces  in  range  expressions.  You  can
273        replace the spaces with &apos;_&apos;, or (in most cases) &apos;-&apos;, or (in some cases)
274        leave  the  spaces out altogether. Examples in this man page use spaces
275        for clarity.
276
277        Open-ended ranges are supported (since Xapian 1.2.1), i.e. it&apos;s  possi‐
278        ble  to specify date:..&lt;until&gt; or date:&lt;since&gt;.. to not limit the start
279        or end time, respectively. Pre-1.2.1 Xapian does not report an error on
280        open ended ranges, but it does not work as expected either.
281 </pre>
282
283 <h3> &nbsp; Relative date and time</h3>
284 <pre>
285        [N|number]         (years|months|weeks|days|hours|hrs|minutes|mins|sec‐
286        onds|secs) [...]
287
288        All refer to past, can be repeated and will be accumulated.
289
290        Units  can  be  abbreviated to any length, with the otherwise ambiguous
291        single m being m for minutes and M for months.
292
293        Number can also be written out one,  two,  ...,  ten,  dozen,  hundred.
294        Additionally, the unit may be preceded by &quot;last&quot; or &quot;this&quot; (e.g., &quot;last
295        week&quot; or &quot;this month&quot;).
296
297        When combined with absolute date and time, the relative date  and  time
298        specification  will  be  relative  from the specified absolute date and
299        time.
300
301        Examples: 5M2d, two weeks
302 </pre>
303
304 <h3> &nbsp; Supported absolute time formats</h3>
305 <pre>
306        · H[H]:MM[:SS] [(am|a.m.|pm|p.m.)]
307
308        · H[H] (am|a.m.|pm|p.m.)
309
310        · HHMMSS
311
312        · now
313
314        · noon
315
316        · midnight
317
318        · Examples: 17:05, 5pm
319 </pre>
320
321 <h3> &nbsp; Supported absolute date formats</h3>
322 <pre>
323        · YYYY-MM[-DD]
324
325        · DD-MM[-[YY]YY]
326
327        · MM-YYYY
328
329        · M[M]/D[D][/[YY]YY]
330
331        · M[M]/YYYY
332
333        · D[D].M[M][.[YY]YY]
334
335        · D[D][(st|nd|rd|th)] Mon[thname] [YYYY]
336
337        · Mon[thname] D[D][(st|nd|rd|th)] [YYYY]
338
339        · Wee[kday]
340
341        Month names can be abbreviated at three or more characters.
342
343        Weekday names can be abbreviated at three or more characters.
344
345        Examples: 2012-07-31, 31-07-2012, 7/31/2012, August 3
346 </pre>
347
348 <h3> &nbsp; Time zones</h3>
349 <pre>
350        · (+|-)HH:MM
351
352        · (+|-)HH[MM]
353
354        Some time zone codes, e.g. UTC, EET.
355 </pre>
356
357 <h2>SEE ALSO</h2>
358 <pre>
359        <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>
360        <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),
361        <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)
362 </pre>
363
364 <h2>AUTHOR</h2>
365 <pre>
366        Carl Worth and many others
367 </pre>
368
369 <h2>COPYRIGHT</h2>
370 <pre>
371        2009-2015, Carl Worth and many others
372 </pre>
373
374 <h2>0.21</h2>