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