[
https://issues.apache.org/jira/browse/LUCENE-5101?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13759404#comment-13759404
]
Adrien Grand commented on LUCENE-5101:
--------------------------------------
This CWF is a bit different in that if it gets a cacheable filter which is not
a FixedBitSet, it will convert it to a FixedBitSet instead of keeping it as-is.
I think this is required for instance if users have custom filter
implementations that return cacheable filters which are not a FixedBitSet (some
filters return cacheable doc id sets, for instance TermsFilter could be backed
by something else than a FixedBitSet in the future).
> 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
> Attachments: DocIdSetBenchmark.java, LUCENE-5101.patch,
> LUCENE-5101.patch, LUCENE-5101.patch
>
>
> 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: [email protected]
For additional commands, e-mail: [email protected]