You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Shai Erera (JIRA)" <ji...@apache.org> on 2011/01/26 09:34:45 UTC
[jira] Closed: (LUCENE-344) [PATCH] Introduction of QueryFactory
interface for Query construction
[ https://issues.apache.org/jira/browse/LUCENE-344?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Shai Erera closed LUCENE-344.
-----------------------------
Resolution: Not A Problem
Assignee: (was: Lucene Developers)
Not sure this is a problem anymore since QP now allows extending and overriding getXYZ() methods for creating specific Query instances.
> [PATCH] Introduction of QueryFactory interface for Query construction
> ---------------------------------------------------------------------
>
> Key: LUCENE-344
> URL: https://issues.apache.org/jira/browse/LUCENE-344
> Project: Lucene - Java
> Issue Type: Improvement
> Components: QueryParser
> Affects Versions: unspecified
> Environment: Operating System: Linux
> Platform: Other
> Reporter: Matthew Denner
> Priority: Minor
> Attachments: Lucene-QueryParser.patch
>
>
> To override the default behaviour of the QueryParser you must currently extend
> it and override the appropriate methods. This seemed to be a little awkward.
>
> To enable a (hopefully) more flexible means of creating Query instances it
> would seem better to introduce a QueryFactory interface and pass an instance of
> an implementation of this interface to the QueryParser, having the QueryParser
> callback to it to construct the query as it parses it. With this design you
> could write something like:
>
> QueryParser parser = new QueryParser("defaultField", new StandardAnalyzer(),
> new QueryFactoryImpl());
>
> Where 'QueryFactoryImpl' is an implementation of the QueryFactory interface.
> If you wanted to add the ability to lower case all of your queries you could
> then write:
>
> QueryParser parser = new QueryParser("defaultField", new StandardAnalyzer(),
> new LowerCaseQueryFactory(new QueryFactoryImpl()));
>
> Where 'LowerCaseQueryFactory' is a decorator around another QueryFactory
> instance and it simply lowercases all the terms passed to it before delegating
> the actual query construction. This is a simple example, but more powerful
> functionality could be added not by changing the QueryParser, but by creating a
> new QueryFactory implementation.
>
> I have a patch for this which will be forthcoming in a moment.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org