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