[ 
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: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to