[ https://issues.apache.org/jira/browse/LUCENE-10075?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17423887#comment-17423887 ]
Alan Woodward commented on LUCENE-10075: ---------------------------------------- I played with this a bit over the weekend trying to avoid making any changes to the iterators and keeping everything inside CachingMatchesIterator, but I think you're right, we need to have a way of indicating to subintervals that the parent iterator has found a match and is now minimizing. I'll have a proper look at your other PR, thanks for opening! > 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: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org