You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Peyman Faratin <pe...@robustlinks.com> on 2012/03/26 17:27:23 UTC

QueryHandler

Hi

A noobie question. I am uncertain what is the best way to design for my requirement which the following.

I want to allow another client in solrj to query solr with a query that is handled with a custom handler

localhost:9090/solr/tokenSearch?tokens{!dismax qf=content}pear,apples,oyster,king kong&fl=score&rows=1000

i.e. a list of tokens (single word and phrases) is sent in one http call. 

What I would like to do is to search over each individual token and compose a single response back to the client

The current approach I have taken is to create a custom search handler as follows

<requestHandler name="/tokenSearch" class="solr.SearchHandler">
 <lst name="defaults">
       <str name="defType">dismax</str>    	
  </lst>
  <arr name="components">
       <str>myHandler</str>
   </arr>
</requestHandler>

<searchComponent name="myHandler" class="com.a.RequestHandlers.myHandler"/>
   
myHandler (which extends SearchComponent) overrides prepare and process methods, extracting and iterating over each token in the input. The problem I am hitting in this design is that the prepare() method is passed a reference to the SolrIndexSearcher in the ResponseBuilder parameter (so for efficiency reasons i don't want to open up another server connection for the search). I can construct a Lucene query and search just fine, but what i would like to do is instead use the e/dismax queries (rather than construct my own - to reduce errors). The getDocList() method of SolrIndexSearcher on the other hand requires a lucene query object. 

Is this an appropriate design for my requirement? And if so what is the best way to send a SolrQuery to the SolrIndexSearcher?

Thank you 

Peyman