lib: optimize counting documents
authorDavid Bremner <david@tethera.net>
Thu, 12 Jan 2017 02:01:15 +0000 (22:01 -0400)
committerDavid Bremner <david@tethera.net>
Sat, 28 Jan 2017 01:54:44 +0000 (21:54 -0400)
From #xapian

olly> bremner: btw, i noticed notmuch count see ms to request all the documents and then ignores them

bremner> hmm. There's something funny about the way that notmuch uses matches in general iirc

olly> it should be able to do: mset = enquire.get_mset (0, 0, notmuch->xapian_db->get_doccount ());
...
olly> get_matches_estimated() will be exact because check_at_least is the size of the database

lib/query.cc

index 53efd4e18fc1698d88c0b8ac476fd33094f2e2fc..4ccd81046128052f3461622e8a58c5c63af782f0 100644 (file)
@@ -606,8 +606,9 @@ _notmuch_query_count_documents (notmuch_query_t *query, const char *type, unsign
        /*
         * Set the checkatleast parameter to the number of documents
         * in the database to make get_matches_estimated() exact.
+        * Set the max parameter to 0 to avoid fetching documents we will discard.
         */
-       mset = enquire.get_mset (0, notmuch->xapian_db->get_doccount (),
+       mset = enquire.get_mset (0, 0,
                                 notmuch->xapian_db->get_doccount ());
 
        count = mset.get_matches_estimated();