Skip to content
Browse files

lib: Add non-content terms with a WDF value of 0.

The WDF is the "within-document frequency" value for a particular
term. It's intended to provide an indication of how frequent a term is
within a document, (for use in computing relevance). Xapian's term
generator already computes WDF values when we use that, (which we do
for indexing all mail content).

We don't use the term generator when adding single terms for things
that don't actually appear in the mail document, (such as tags, the
filename, etc.). In this case, the WDF value for these terms doesn't
matter much.

But Xapian's flint backend can be more efficient with changes to terms
that don't affect the document "length". So there's a performance
advantage for manipulating tags (with the flint backend) if the WDF of
these terms is 0.
  • Loading branch information...
1 parent 45b1856 commit ccf2e0cc4211c276da1db43cdca7ee11018c391d @cworth-gh cworth-gh committed Jan 9, 2010
Showing with 4 additions and 4 deletions.
  1. +2 −2 lib/directory.cc
  2. +2 −2 lib/message.cc
View
4 lib/directory.cc
@@ -213,7 +213,7 @@ _notmuch_directory_create (notmuch_database_t *notmuch,
Xapian::docid parent_id;
char *term = talloc_asprintf (local, "%s%s",
_find_prefix ("directory"), db_path);
- directory->doc.add_term (term);
+ directory->doc.add_term (term, 0);
directory->doc.set_data (path);
@@ -225,7 +225,7 @@ _notmuch_directory_create (notmuch_database_t *notmuch,
term = talloc_asprintf (local, "%s%u:%s",
_find_prefix ("directory-direntry"),
parent_id, basename);
- directory->doc.add_term (term);
+ directory->doc.add_term (term, 0);
}
directory->doc.add_value (NOTMUCH_VALUE_TIMESTAMP,
View
4 lib/message.cc
@@ -192,7 +192,7 @@ _notmuch_message_create_for_message_id (notmuch_database_t *notmuch,
db = static_cast<Xapian::WritableDatabase *> (notmuch->xapian_db);
try {
- doc.add_term (term);
+ doc.add_term (term, 0);
talloc_free (term);
doc.add_value (NOTMUCH_VALUE_MESSAGE_ID, message_id);
@@ -646,7 +646,7 @@ _notmuch_message_add_term (notmuch_message_t *message,
if (strlen (term) > NOTMUCH_TERM_MAX)
return NOTMUCH_PRIVATE_STATUS_TERM_TOO_LONG;
- message->doc.add_term (term);
+ message->doc.add_term (term, 0);
talloc_free (term);

0 comments on commit ccf2e0c

Please sign in to comment.
Something went wrong with that request. Please try again.