[ 
https://issues.apache.org/jira/browse/LUCENE-3041?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13027279#comment-13027279
 ] 

Chris Male commented on LUCENE-3041:
------------------------------------

To follow up on Earwin's comments, I'm going to do the following:

- Leave Query#rewrite out of the walking process.  As Earwin said, rewrite 
provides vital query optimization / conversion to primitive runnable queries.  
Having this method on Query is a good idea since user Queries can simply 
implement this method and move on.
- In a separate issue, add a RewriteState like concept which can be used for 
caching rewrites like that suggested by Simon.  This will have a considerable 
performance improvement for people doing lots of repeated FuzzyQuerys for 
example.
- Change my processing concept into a generic Walker<I, O> system, which can be 
used for lots of things in Lucene.  Users can implement this Walker to do 
whatever they want (maybe we can pry Earwin's walker based highlighter from 
him? :D)
- Overload IndexSearcher's methods to support passing in a Walker.  We need 
this, instead of simply having the Walker external, because we really want to 
support per-segment Walking.

I'll make a patch for the stuff related to this issue shortly, and spin off the 
RewriteState stuff.

> Support Query Visting / Walking
> -------------------------------
>
>                 Key: LUCENE-3041
>                 URL: https://issues.apache.org/jira/browse/LUCENE-3041
>             Project: Lucene - Java
>          Issue Type: Improvement
>          Components: Search
>            Reporter: Chris Male
>            Priority: Minor
>         Attachments: LUCENE-3041.patch, LUCENE-3041.patch, LUCENE-3041.patch, 
> LUCENE-3041.patch
>
>
> Out of the discussion in LUCENE-2868, it could be useful to add a generic 
> Query Visitor / Walker that could be used for more advanced rewriting, 
> optimizations or anything that requires state to be stored as each Query is 
> visited.
> We could keep the interface very simple:
> {code}
> public interface QueryVisitor {
>   Query visit(Query query);
> }
> {code}
> and then use a reflection based visitor like Earwin suggested, which would 
> allow implementators to provide visit methods for just Querys that they are 
> interested in.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to