lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dzmitry Petrushenka" <dpetr...@gmail.com>
Subject Re: Dynamic core selection
Date Fri, 02 Nov 2012 16:45:39 GMT
Hi all!

Just sharing the solution)

I've extended SolrDispatchFilter with my own implementation and did like  
this:

...

String core = determineCore(req);
super.doFilter(new CoreRoutingReqWrapper(req, core), response, chain);

...

code for the CoreRoutingReqWrapper class:

class CoreRoutingReqWrapper extends HttpServletRequestWrapper {
         private String pathToCore;

         public CoreRoutingReqWrapper(HttpServletRequest request, String  
core) {
             super(request);
             pathToCore = "/" + core + request.getServletPath();
         }

         @Override
         public String getServletPath() {
             return pathToCore;
         }
     }

Would be nice to have something like CoreResolver component in Solr  
architecture.

Something like this:

interface CoreResolver {
	String resolveCore(HttpServlerRequest req);
}

Would make Solr server more customizable.

What do you think?

Thanx,

>
> : as I said we have our own search handler (wrapping handleRequestBody  
> method
> : and adding logic before it) where we convert those custom_paramX  
> params into
> : Solr understandable params like q, fq, facet, etc. Then we delegate to  
> Solr to
> : process them.
> :
> : So what I want to do is core0 handle things if custom_param1=aaa and  
> core1 if
> : custom_param1=ccc.
>
> Ah.. i think i'm understanding:
>  * you know you need a custom search handler
>  * you have a custom search handler that delegates to some other handler
> based on some logic
>  * your customer handler modifies the request params before delegating to
> the handler it picks.
>  * the part you are missing is how to delegate to an entirely differnet
> SolrCore.
>
> does that capture your question?
>
> The nutshell is you would need to ask your current SolrCore for access to
> the CoreContainer -- then create a new "LocalSolrQueryRequest" and ask
> that SolrCore to execute it.  one hitch to watch out for is keeping track
> of thinkgs like the SolrIndexSearcher used -- because stuff like  
> "DocList"
> values in the response will come from the *other* SolrIndexSearcher, and
> you'll need to use that when writting the response out (because the
> QueryResponseWriter needs to as the SolrInexSearcher for the stored  
> fields
> from those docids).
>
> (Note: i have never tried this ... there may be other gotcha's i'm not
> aware of)
>
>
>
>
>
>
> -Hoss


-- 
Using Opera's revolutionary email client: http://www.opera.com/mail/

Mime
View raw message