[ 
https://issues.apache.org/jira/browse/LUCENE-5441?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13902865#comment-13902865
 ] 

ASF GitHub Bot commented on LUCENE-5441:
----------------------------------------

GitHub user PaulElschot opened a pull request:

    https://github.com/apache/lucene-solr/pull/33

    LUCENE-5092, 2nd try

    In core introduce DocBlocksIterator.
    Use this in FixedBitSet, in EliasFanoDocIdSet and in join module ToChild... 
and ToParent...
    Also change BaseDocIdSetTestCase to test 
DocBlocksIterator.advanceToJustBefore.
    
    This was simplified a lot by LUCENE-5441 and LUCENE-5440.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/apache/lucene-solr LUCENE-5092-pull-2

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/lucene-solr/pull/33.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #33
    
----
commit 4f8eae48ff0441b86a0fdb130e564f646dffcc43
Author: Paul Elschot <paul.j.elsc...@gmail.com>
Date:   2014-02-16T22:31:58Z

    Squashed commit for LUCENE-5092

----


> Decouple DocIdSet from OpenBitSet and FixedBitSet
> -------------------------------------------------
>
>                 Key: LUCENE-5441
>                 URL: https://issues.apache.org/jira/browse/LUCENE-5441
>             Project: Lucene - Core
>          Issue Type: Task
>          Components: core/other
>    Affects Versions: 4.6.1
>            Reporter: Uwe Schindler
>             Fix For: 5.0
>
>         Attachments: LUCENE-5441.patch, LUCENE-5441.patch, LUCENE-5441.patch
>
>
> Back from the times of Lucene 2.4 when DocIdSet was introduced, we somehow 
> kept the stupid "filters can return a BitSet directly" in the code. So lots 
> of Filters return just FixedBitSet, because this is the superclass (ideally 
> interface) of FixedBitSet.
> We should decouple that and *not* implement that abstract interface directly 
> by FixedBitSet. This leads to bugs e.g. in BlockJoin, because it used Filters 
> in a wrong way, just because it was always returning Bitsets. But some 
> filters actually don't do this.
> I propose to let FixedBitSet (only in trunk, because that a major backwards 
> break) just have a method {{asDocIdSet()}}, that returns an anonymous 
> instance of DocIdSet: bits() returns the FixedBitSet itsself, iterator() 
> returns a new Iterator (like it always did) and the cost/cacheable methods 
> return static values.
> Filters in trunk would need to be changed like that:
> {code:java}
> FixedBitSet bits = ....
> ...
> return bits;
> {code}
> gets:
> {code:java}
> FixedBitSet bits = ....
> ...
> return bits.asDocIdSet();
> {code}
> As this methods returns an anonymous DocIdSet, calling code can no longer 
> rely or check if the implementation behind is a FixedBitSet.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to