lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Adrien Grand (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (LUCENE-6785) Consider merging Query.rewrite() into Query.createWeight()
Date Fri, 25 Sep 2015 11:23:04 GMT

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

Adrien Grand updated LUCENE-6785:
---------------------------------
    Attachment: LUCENE-6785-alt.patch

Here is a patch for the alternative idea (lucene-core only).

> 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-alt.patch, 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-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org


Mime
View raw message