We already have CheckIndex that verifies that Fields.iterator() returns a
sorted iterator so I think we should improve the javadocs of
Fields.iterator() to make it explicit.

Le mar. 18 oct. 2016 à 05:15, Trejkaz <trej...@trypticon.org> a écrit :

> Continuation, found a bug but I'm not sure whether it's in Lucene or
> Lucene's Javadoc.
>
> In MultiFields:
>
>       @SuppressWarnings({"unchecked","rawtypes"})
>       @Override
>       public Iterator<String> iterator() {
>         Iterator<String> subIterators[] = new Iterator[subs.length];
>         for(int i=0;i<subs.length;i++) {
>           subIterators[i] = subs[i].iterator();
>         }
>         return new MergedIterator<>(subIterators);
>       }
>
> MergedIterator says in the Javadoc:
>
>     "The behavior is undefined if the iterators are not actually sorted."
>
> And indeed, the iterators are _not_ actually sorted. So I look at
> where they come from, Fields#iterator(), which is documented fairly
> tersely:
>
>     "Returns an iterator that will step through all fields names.
> This will not return null."
>
> Which doesn't say anything about the names being in order. So I assume
> that either:
>
>   (a) Fields#iterator() is actually supposed to be sorted and the
> documentation should specify it but doesn't, or
>
>   (b) Fields#iterator() is not supposed to be sorted, but either
> MultiFields#iterator() or MergedIterator is supposed to be handling
> this better.
>
> Either way, I think it's a bug in Lucene. But since I don't know which
> direction it's in, and I don't have a reproducible test case I can
> just hand over, I can't easily file it. :/
>
> TX
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
> For additional commands, e-mail: java-user-h...@lucene.apache.org
>
>

Reply via email to