You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-dev@lucene.apache.org by Chris Hostetter <ho...@fucit.org> on 2009/02/02 23:44:28 UTC
Re: Intersecting a precalculated OpenBitSet with results
: We currently are intersecting a precalculated OpenBitSet (that does not
: affect score) with search by adding it to the filters in the ResponseBuilder
: via a wrapped in a ConstantScoreQuery and Filter. We do this just before
: QueryComponent does its job.
...
: But, it does more work than needed. Wouldn't it be better to just intersect
: this set with the results after they are determined? To do this, Query
: Component needs a place to allow intersections before it stuffs the response
: in the response.
I think a simpler approach might be to write a component that runs after
QueryComponent which:
* extracts the doclist/set currently in the response (by QueryComponent)
* intersects them with the computed bitsets
* writes the new doclist/docset back into the response
However: i wouldn't actaully assume that's better then your current
approach of wrapping the OpenBitSet into a ConstantScoreQuery -- your
current approach is probably helping the the IndexSearcher "skip" past a
lot of docs w/o scoring them, but applying the intersection after the fact
would eliminate that optimization.
It's also very hard to compute a DocList from an intersection after the
fact ... you essentially need to re-execute the search anyway since it
only keeps track of a set number of sorted documents.
-Hoss