My application needs to enumerate all terms for a specific field. To do that I get the TermEnum using the following code:
TermEnum terms = reader.terms(new Term(fieldName, "")); I noticed that initially TermEnum is positioned at the first term. In other words, I don't have to call terms.next() before calling terms.term(). This is different from the behavior of Iterator, Enumeration and ResultSet whose initial position is before the first result. I wonder whether it is this way by design. If it is by design, what is the defined TermEnum behavior if there are no terms for the field name in question? Will the call to terms.term() return null? Or get positioned at the first term with the field name that comes after the provided field name? What if there are no field names after it? In any case, some javadoc describing the behavior would be extremely useful. Being used to Iterators and ResultSets, I automatically wrote the code the same way, calling next() first. Fortunately, I had a field with only 2 terms, that's why I noticed that I am missing the first element. Thanks, Alexey