[Xapian-discuss] Read accesses through WritableDatabase are slow

Jean-Francois Dockes jean-francois.dockes at wanadoo.fr
Mon Oct 23 22:03:47 BST 2006


Thanks a lot.

Olly Betts writes:
 > On Mon, Oct 23, 2006 at 04:23:45PM +0200, Jean-Francois Dockes wrote:
 > > Writes happen even when there are no modifications to the index (all files
 > > up to date).
 > 
 > That's a bug.  The attached patch should fix it.
 > 
 > > If somebody has already solved this problem in a different way, or has an
 > > idea, I'd sure be glad to hear about it...  
 > 
 > I'd go with the approach James suggests - add the same term to all the
 > Xapian documents generated from a particular source document.  It's
 > better to use a single term's posting list to store a list of documents
 > than store it using one term per document.
 > 
 > Cheers,
 >     Olly
 > Index: backends/flint/flint_database.cc
 > ===================================================================
 > --- backends/flint/flint_database.cc	(revision 7356)
 > +++ backends/flint/flint_database.cc	(working copy)
 > @@ -1040,8 +1040,9 @@
 >      DEBUGCALL(DB, TermList *, "FlintWritableDatabase::open_allterms", "");
 >      if (transaction_active())
 >  	throw Xapian::UnimplementedError("Can't open allterms iterator during a transaction");
 > -    // Terms may have been added or removed, so we need to flush.
 > -    do_flush_const();
 > +    // If there are changes, terms may have been added or removed, and so we
 > +    // need to flush.
 > +    if (changes_made) do_flush_const();
 >      RETURN(new FlintAllTermsList(Xapian::Internal::RefCntPtr<const FlintWritableDatabase>(this),
 >  				 &database_ro.postlist_table));
 >  }



More information about the Xapian-discuss mailing list