Re: sorting large msets

Eric Wong <[email protected]>
Newsgroups gmane.comp.search.xapian.general
Message-ID <20180406192423.GA12111@dcvr>
> > Olly Betts <[email protected]> wrote:
> > > 
> > > The reverse order (ENQ_ASCENDING) is really fast - about 0.0001 seconds.
> > > This is because in that case we can just stop once we've found 200
> > > matches.

With a few million documents, that ENQ_ASCENDING sounds promising :)

So, it looks like if I had ideal ordering, I could do something
along the lines of:

	my $doc_id = $db->get_metadata('last_doc_id') || 0xffffffff;

	$db->replace_document($doc_id--, $_) foreach (@doc);

	$db->set_metadata('last_doc_id', $doc_id);

And get killer performance.

Olly Betts <[email protected]> wrote:
> On Sat, Mar 31, 2018 at 12:58:19AM +0000, Eric Wong wrote:
> > Would it be possible to teach Xapian to optimize its storage for
> > certain queries so it can stop once it's found 200 matches?
> > From what I recall, SQL implementations are pretty good at that.
> 
> Probably - e.g. tracking some sort of buckets for values would help here
> as well as for some other uses of values.

Alright.  I'll keep an eye out for that in coming years.

I've moved some queries (OVER/XOVER) to SQLite which is already
a dependency of public-inbox (sometimes it needs to sort by
article number, sometimes it sorts by timestamp).
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.