]> git.cworth.org Git - notmuch-wiki/blobdiff - faq.mdwn
discuss the "why not regex everywhere" question
[notmuch-wiki] / faq.mdwn
index 9d47f1bad6c8e242c31bfce7b248b21889e18f77..71c9ff80e6a06fc9b367031b12c4cb678fb06a27 100644 (file)
--- a/faq.mdwn
+++ b/faq.mdwn
@@ -27,11 +27,26 @@ See [[excluding]].
 
 See help for `message-citation-line-format` for details.
 
+## What are sexp queries?
+
+For the syntax of sexp queries, see [the manual
+page](https://notmuchmail.org/doc/latest/man7/notmuch-sexp-queries.html).
+
+To see if your version of notmuch supports them, run
+
+        $ notmuch config get built_with.sexp_queries
+
 ## How do I search for messages that have no tags?
 
-Unfortunately, there is no way to do this directly.
+To do this directly, you need a recent notmuch compiled with sexp
+queries (see above). You can then run
 
-However, it's possible to accomplish this using two searches in shell. First,
+        $ notmuch search --query=sexp --output=messages '(not (tag *))'
+
+The same style of query should work for any prefix, even user defined
+prefixes like `List` (see below).
+
+Otherwise, it's possible to accomplish this using two searches in shell. First,
 you need to query all tags in the database, and transform the result into a
 query that matches messages that have none of those tags:
 
@@ -54,6 +69,17 @@ searches. Punctuation is mostly ignored.
 The boolean prefix searches (see Boolean and Probabilistic Prefixes in the man
 page), such as tag: or path: searches, need an exact match.
 
+For [specific
+fields](https://notmuchmail.org/doc/latest/man7/notmuch-search-terms.html#search-prefixes)
+it is possible to use regex searches (although these are often
+noticeably slower than native Xapian queries). The limited set of
+fields is a quirk of implementation which requires a Xapian "value
+slot" in the database schema. Adding regex support for more fields to
+would require of adding more value slots to the schema. The
+performance impact of that needs to be experimentally evaluated, and
+assuming it is not too bad, some database upgrade code would need to
+be written.
+
 ## How do I search for folders or paths with spaces?
 
 The spaces in the names must be escaped. For example if you use bash or zsh,