[ https://issues.apache.org/jira/browse/LUCENE-6785?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14907871#comment-14907871 ]
Adrien Grand commented on LUCENE-6785: -------------------------------------- Sorry for the late reply, I was on vacation and just returned yesterday. Overall I'm torn with this patch because I like it a lot from a usability perspective (I really hate how you need to call rewrite in a loop today before calling createWeight) but Query.rewrite was our only opportunity to perform some kind of query optimization, and it's gone now. I can give a try to the alternative I mentionned above on lucene-core to see how things fit together. > 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: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org