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 > >