[ https://issues.apache.org/jira/browse/SOLR-16162?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17526606#comment-17526606 ]
Michael Gibney commented on SOLR-16162: --------------------------------------- Sure!: currently FilterQuery consults the filterCache on the backend, but doesn't expose the cached DocSet directly. Rather, it returns a {{Weight}} derived from DocSet.makeQuery().createWeight(), and the weight returns Scorers over individual segment LeafReaderContexts. The scorers are then used (via {{DocSetUtil.createDocSetGeneric()}}) to iterate through matching docs (in the usual way, as against a "normal" query), collecting into an entirely new one-off DocSet built via DocSetCollector. So basically you have a (cached) underlying DocSet, forced through the Weight/Scorer abstraction to build an entirely new DocSet that's equivalent to the original underlying DocSet, for every request. The goal of this PR is to provide a way to bypass the Weight/Scorer abstraction where possible and just directly use the single cached DocSet instance. > FilterQuery (`filter([some_query])`) should implement DocSetProducer > -------------------------------------------------------------------- > > Key: SOLR-16162 > URL: https://issues.apache.org/jira/browse/SOLR-16162 > Project: Solr > Issue Type: Improvement > Security Level: Public(Default Security Level. Issues are Public) > Components: query parsers > Affects Versions: main (10.0) > Reporter: Michael Gibney > Assignee: Michael Gibney > Priority: Minor > Time Spent: 10m > Remaining Estimate: 0h > > There is a substantial practical reason for FilterQuery to implement > DocSetProducer: the way FilterQuery works, it only consults the cache > internally for the backing query; the cache is never directly consulted for > the FilterQuery _per se_. As a consequence, when FilterQuery is used in a > context that wants a DocSet, currently (without implementing DocSetProducer), > a full clone of the cached DocSet must always be built via the Weight > returned by FilterQuery.createWeight(). Implementing DocSetProducer allows to > avoid superfluous DocSet creation. -- This message was sent by Atlassian Jira (v8.20.7#820007) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For additional commands, e-mail: issues-h...@solr.apache.org