Solr team,

Long time, first time-- many thanks for all your work on creating this 
excellent search appliance.

The 40,000ft view of my problem is that I need to execute multiple queries per 
endpoint invocation, with the results for each query grouped in the response 
output as such that they were individual calls (think “composite” request & 
response) wrapped by a <composite> tag, etc.

So:

Normal Query (single query input):

<results>
....
</results>

Composite Query (multiple query input):

<composite>
   <results>....</results>
   <results>....</results>
  <results>....</results>
<composite>

I’ve already created a custom Handler and Writer for our “single”, 
non-composite needs, but now I need to modify the behavior so that if multiple 
search queries are specified (ie:  q=query1;query2;query3 etc), the service 
will invoke and return all 3 result sets in a single invocation.

Herein lies the problem from what I can tell:  I don’t have any control over 
SolrQueryRequest or SolrQueryResponse.  My initial attempts have me subclassing 
both of these to hold a List of requests and responses, with a cursor that 
moves the “current” req/res each time through my handler.  All methods are 
implemented to delegate directly to the req/res that the cursor is pointing to. 
 I would check, via instanceof, whether we are dealing with a normal or 
composite query in the writer to dump the results appropriately.

To pull this off, it appears I would need to modify SolrDispatchFilter to allow 
for a configurable factory(?) for my custom SolrQueryRequest and 
SolrQueryResponse objects.  Can this be solved some other way without code 
modifications?  If code modifications are required, do you have any suggestions 
on how the configuration file entry might look, etc?  I can write the patch but 
wanted to get your feedback before going any further with this.

Thanks

Aaron

Reply via email to