[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