kaivalnp commented on code in PR #932:
URL: https://github.com/apache/lucene/pull/932#discussion_r887687260
##########
lucene/core/src/java/org/apache/lucene/search/KnnVectorQuery.java:
##########
@@ -225,6 +225,11 @@ public BitSetIterator getIterator(int contextOrd) {
return new BitSetIterator(bitSets[contextOrd], cost[contextOrd]);
}
+ public void setBitSet(BitSet bitSet, int cost) {
+ bitSets[ord] = bitSet;
Review Comment:
> Could we create a new `Query` type backed by a `BitSet`? For example we
have a `BitSetQuery` in `TestScorerPerf`, maybe we could pull this out as a
test class or just duplicate it. That way we wouldn't have to modify
`KnnVectorQuery` just for these test purposes.
The current SelectiveQuery class is in essence a Query backed by
FixedBitSet. The problem arises during hit collection, which happens doc by doc
(so we have to iterate over the entire BitSet, and call collect on set bits),
which adds a large arbitrary time. To prevent this copying of our BitSet into
BitSetCollector's internal one (bit by bit), I have overloaded the BulkScorer
to directly update it's underlying reference
An alternative to adding these modifiers could be using the Reflection
package to manually update the variables. This way we won't need to change
defined classes for tests (but it might make the test somewhat hacky?)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]