[
https://issues.apache.org/jira/browse/LUCENE-10075?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17423654#comment-17423654
]
Alan Woodward commented on LUCENE-10075:
----------------------------------------
This is a bug in CachingMatchesIterator - it needs to keep track of the state
of its wrapped iterator, and return offsets from cache if the wrapped iterator
is exhausted. I have a fix, will open a PR shortly.
> NPE on wildcard-based overlapping intervals highlighting
> --------------------------------------------------------
>
> Key: LUCENE-10075
> URL: https://issues.apache.org/jira/browse/LUCENE-10075
> Project: Lucene - Core
> Issue Type: Bug
> Affects Versions: main (9.0), 8.7
> Reporter: Nikolay Khitrin
> Priority: Major
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
> UnifiedHighlighter with WEIGHT_MATCHES flag throws an NullPointerException on
> overlapping intervals with wildcard term.
> Minimal reproducible example
> Doc: "Compare Computer Science"
> Query: Intervals.maxgaps(1, Intervals.ordered(Intervals.wildcard(new
> BytesRef("comp*")), Intervals.term("science")));
> Stacktrace:
>
> {code:java}
> java.lang.NullPointerException: Cannot invoke
> "org.apache.lucene.search.MatchesIterator.endPosition()" because the return
> value of "org.apache.lucene.util.PriorityQueue.top()" is
> nulljava.lang.NullPointerException: Cannot invoke
> "org.apache.lucene.search.MatchesIterator.endPosition()" because the return
> value of "org.apache.lucene.util.PriorityQueue.top()" is null
> at
> org.apache.lucene.search.DisjunctionMatchesIterator.endPosition(DisjunctionMatchesIterator.java:233)
> at
> org.apache.lucene.queries.intervals.MultiTermIntervalsSource$1.endPosition(MultiTermIntervalsSource.java:132)
> at
> org.apache.lucene.search.FilterMatchesIterator.endPosition(FilterMatchesIterator.java:49)
> at
> org.apache.lucene.queries.intervals.CachingMatchesIterator.getSubMatches(CachingMatchesIterator.java:88)
> at
> org.apache.lucene.queries.intervals.MinimizingConjunctionMatchesIterator.getSubMatches(MinimizingConjunctionMatchesIterator.java:96)
> at
> org.apache.lucene.queries.intervals.IntervalMatches$1.getSubMatches(IntervalMatches.java:82)
> at
> org.apache.lucene.search.FilterMatchesIterator.getSubMatches(FilterMatchesIterator.java:64)
> at
> org.apache.lucene.search.uhighlight.OffsetsEnum$OfMatchesIteratorWithSubs.nextWhenMatchesIterator(OffsetsEnum.java:209)
> at
> org.apache.lucene.search.uhighlight.OffsetsEnum$OfMatchesIteratorWithSubs.nextPosition(OffsetsEnum.java:201)
> at
> org.apache.lucene.search.uhighlight.FieldHighlighter.highlightOffsetsEnums(FieldHighlighter.java:134)
> at
> org.apache.lucene.search.uhighlight.FieldHighlighter.highlightFieldForDoc(FieldHighlighter.java:83)
> at
> org.apache.lucene.search.uhighlight.UnifiedHighlighter.highlightFieldsAsObjects(UnifiedHighlighter.java:635)
> at
> org.apache.lucene.search.uhighlight.UnifiedHighlighter.highlightFields(UnifiedHighlighter.java:505)
> at
> org.apache.lucene.search.uhighlight.UnifiedHighlighter.highlightFields(UnifiedHighlighter.java:483)
> at
> org.apache.lucene.search.uhighlight.UnifiedHighlighter.highlight(UnifiedHighlighter.java:416)
> {code}
>
> Search by the same query completes without any exception, ordered/unordered
> and larger gaps have no effect.
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]