diff --git a/index/field/multi_field_union_iterator.go b/index/field/multi_field_union_iterator.go index d75e932..950b7e7 100644 --- a/index/field/multi_field_union_iterator.go +++ b/index/field/multi_field_union_iterator.go @@ -44,7 +44,7 @@ func (it *MultiFieldUnionIterator) DocID() int32 { return it.unionIter.DocID() } // value array is valid. func (it *MultiFieldUnionIterator) Values() ([]field.ValueUnion, []bool) { for i := 0; i < len(it.iters); i++ { - if it.unionIter.IsDoneAt(i) || it.unionIter.DocID() != it.iters[i].DocID() { + if !it.unionIter.IsValidAt(i) { it.hasVals[i] = false } else { it.hasVals[i] = true diff --git a/index/in_any_doc_id_set_iterator.go b/index/in_any_doc_id_set_iterator.go index 9e61ab3..3aca204 100644 --- a/index/in_any_doc_id_set_iterator.go +++ b/index/in_any_doc_id_set_iterator.go @@ -87,9 +87,10 @@ func (it *InAnyDocIDSetIterator) DocID() int32 { return it.docIDs[it.minDocIDIdx] } -// IsDoneAt returns whether the iterator at a given index is done. -func (it *InAnyDocIDSetIterator) IsDoneAt(idx int) bool { - return it.docIDs[idx] == invalidDocID +// IsValidAt returns true if the base iterator at a given index has the same doc ID +// as the current doc ID of the `InAnyDocIDSetIterator`. +func (it *InAnyDocIDSetIterator) IsValidAt(idx int) bool { + return it.docIDs[idx] != invalidDocID && it.docIDs[idx] == it.DocID() } // Err returns any errors encountered.