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