[ 
https://issues.apache.org/jira/browse/LUCENE-9584?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

hackerwin7 updated LUCENE-9584:
-------------------------------
    Description: 
Today, in a point in set query after BKD intersect we get a DocIdSetBuilder 
result, if result's iterator have no docs, then the PointInSetQuery still 
create ConstantScoreScorer with an empty DocIdSetIterator. 

In a Boolean Query, such as query = subQuery1 AND subQuery2 AND subQuery3 .... 
subQueryN

if subQuery1 is a PointInSetQuery and get an empty result iterator, and 
subsequent subQuery2 ~ subQueryN would still evaluate to call build scorer, 
this is an unnecessary cost for this query if subQuery1 have already get an 
empty result iterator .

 

  was:
Today, in a point in set query after BKD intersect we get a DocIdSetBuilder 
result, if result's iterator have no docs, then the PointInSetQuery still 
create ConstantScoreScorer with an empty DocIdSetIterator. 

In a Boolean Query, such as query = subQuery1 AND subQuery2 AND subQuery3 .... 
subQueryN

if subQuery1 is a PointInSetQuery and get an empty result iterator, and 
subsequent subQuery2 ~ subQueryN would still evaluate to call build scorer, 
this is an unnecessary cost for this query if subQuery1 get an empty result 
iterator .

 


> PointInSetQuery does not terminate early if result iterator has no docs
> -----------------------------------------------------------------------
>
>                 Key: LUCENE-9584
>                 URL: https://issues.apache.org/jira/browse/LUCENE-9584
>             Project: Lucene - Core
>          Issue Type: Improvement
>          Components: core/search
>    Affects Versions: 7.7.3, 8.6.3
>            Reporter: hackerwin7
>            Priority: Major
>              Labels: performance
>         Attachments: LUCENE-7.7.0-PointInSetQuery_terminate_early.patch
>
>
> Today, in a point in set query after BKD intersect we get a DocIdSetBuilder 
> result, if result's iterator have no docs, then the PointInSetQuery still 
> create ConstantScoreScorer with an empty DocIdSetIterator. 
> In a Boolean Query, such as query = subQuery1 AND subQuery2 AND subQuery3 
> .... subQueryN
> if subQuery1 is a PointInSetQuery and get an empty result iterator, and 
> subsequent subQuery2 ~ subQueryN would still evaluate to call build scorer, 
> this is an unnecessary cost for this query if subQuery1 have already get an 
> empty result iterator .
>  



--
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