lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Muir (JIRA)" <>
Subject [jira] [Commented] (LUCENE-4771) Query-time join collectors could maybe be more efficient
Date Mon, 25 Feb 2013 19:00:14 GMT


Robert Muir commented on LUCENE-4771:

Thanks for updating Martijn! I plan to look at this later tonight and work on pulling out
the BitsFilteredTermsEnum and making it more efficient. After that, I think we should revisit
the intersection (I started with something ultra-simple here) to make sure its optimal too.

Somehow actually we should try to come up with a standard benchmark (luceneutil or similar)
so that we can test the approach for the single-valued case there too. My intuition says I
think it can be a win in both cases.
> Query-time join collectors could maybe be more efficient
> --------------------------------------------------------
>                 Key: LUCENE-4771
>                 URL:
>             Project: Lucene - Core
>          Issue Type: Improvement
>          Components: modules/join
>            Reporter: Robert Muir
>         Attachments: LUCENE-4771_prototype.patch, LUCENE-4771-prototype.patch, LUCENE-4771_prototype_without_bug.patch
> I was looking @ these collectors on LUCENE-4765 and I noticed:
> * SingleValued collector (SV) pulls FieldCache.getTerms and adds the bytes to a bytesrefhash
> * MultiValued  collector (MV) pulls FieldCache.getDocTermsOrds, but doesnt use the ords,
just looks up each value and adds the bytes per-collect.
> I think instead its worth investigating if SV should use getTermsIndex, and both collectors
just collect-up their per-segment ords in something like a BitSet[maxOrd]. 
> When asked for the terms at the end in getCollectorTerms(), they could merge these into
one BytesRefHash.
> Of course, if you are going to turn around and execute the query against the same searcher
anyway (is this the typical case?), this could even be more efficient: No need to hash or
instantiate all the terms in memory, we could do postpone the lookups to SeekingTermSetTermsEnum.accept()/nextSeekTerm()
i think... somehow :)

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message