[
https://issues.apache.org/jira/browse/LUCENE-6785?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alan Woodward updated LUCENE-6785:
----------------------------------
Attachment: LUCENE-6785.patch
Patch with all tests passing.
bq. I don't think weights can make good cache keys
I wasn't thinking of the Weights themselves, rather that we could add a
getCacheKey() method to weight, with a default implementation that just returns
getQuery(). BQ, DisMaxQ, etc, could then implement their own cache keys.
> Consider merging Query.rewrite() into Query.createWeight()
> ----------------------------------------------------------
>
> Key: LUCENE-6785
> URL: https://issues.apache.org/jira/browse/LUCENE-6785
> Project: Lucene - Core
> Issue Type: Improvement
> Reporter: Alan Woodward
> Attachments: LUCENE-6785.patch, LUCENE-6785.patch
>
>
> Prompted by the discussion on LUCENE-6590.
> Query.rewrite() is a bit of an oddity. You call it to create a query for a
> specific IndexSearcher, and to ensure that you get a query implementation
> that has a working createWeight() method. However, Weight itself already
> encapsulates the notion of a per-searcher query.
> You also need to repeatedly call rewrite() until the query has stopped
> rewriting itself, which is a bit trappy - there are a few places (in
> highlighting code for example) that just call rewrite() once, rather than
> looping round as IndexSearcher.rewrite() does. Most queries don't need to be
> called multiple times, however, so this seems a bit redundant. And the ones
> that do currently return un-rewritten queries can be changed simply enough to
> rewrite them.
> Finally, in pretty much every case I can find in the codebase, rewrite() is
> called purely as a prelude to createWeight(). This means, in the case of for
> example large BooleanQueries, we end up cloning the whole query structure,
> only to throw it away immediately.
> I'd like to try removing rewrite() entirely, and merging the logic into
> createWeight(), simplifying the API and removing the trap where code only
> calls rewrite once. What do people think?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]