[ https://issues.apache.org/jira/browse/LUCENE-5101?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13705638#comment-13705638 ]
Adrien Grand commented on LUCENE-5101: -------------------------------------- +1 The two new impls at least can be constructed from a DocIdSetIterator. Maybe we should have another protected method for what to do in case the doc ID set returned by the filter is already cacheable (by default it would return the set directly). Some filters return doc id sets which are already cacheable (TermsFilter for example) and it could be useful to make sure a CWF always returns the same impl (for instance block joins want a FixedBitSet). > make it easier to plugin different bitset implementations to > CachingWrapperFilter > --------------------------------------------------------------------------------- > > Key: LUCENE-5101 > URL: https://issues.apache.org/jira/browse/LUCENE-5101 > Project: Lucene - Core > Issue Type: Improvement > Reporter: Robert Muir > > Currently this is possible, but its not so friendly: > {code} > protected DocIdSet docIdSetToCache(DocIdSet docIdSet, AtomicReader reader) > throws IOException { > if (docIdSet == null) { > // this is better than returning null, as the nonnull result can be > cached > return EMPTY_DOCIDSET; > } else if (docIdSet.isCacheable()) { > return docIdSet; > } else { > final DocIdSetIterator it = docIdSet.iterator(); > // null is allowed to be returned by iterator(), > // in this case we wrap with the sentinel set, > // which is cacheable. > if (it == null) { > return EMPTY_DOCIDSET; > } else { > /* INTERESTING PART */ > final FixedBitSet bits = new FixedBitSet(reader.maxDoc()); > bits.or(it); > return bits; > /* END INTERESTING PART */ > } > } > } > {code} > Is there any value to having all this other logic in the protected API? It > seems like something thats not useful for a subclass... Maybe this stuff can > become final, and "INTERESTING PART" calls a simpler method, something like: > {code} > protected DocIdSet cacheImpl(DocIdSetIterator iterator, AtomicReader reader) { > final FixedBitSet bits = new FixedBitSet(reader.maxDoc()); > bits.or(iterator); > return bits; > } > {code} -- 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: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org