On 3/11/2014 2:40 AM, rachun wrote:
> $q='macbook';
> $client = new SolrClient($config);
> $query = new SolrQuery();
> $query->setQuery($q);
> $query->addParam("shards.qt","/spell");
> $query->addParam("fl","product_name_th");
>
> $query_response = $client->query($query);
> $result = $query_response->getResponse();
<snip>
> ======================= Solr Log =================
>
> INFO - 2014-03-11 15:23:48.556; org.apache.solr.core.SolrCore;
> [collection1] webapp=/solr path=/select/
> params={fl=product_name_th&indent=on&shards.qt=/spell&start=0&q=macbook&wt=xml&rows=0&version=2.2}
> hits=4 status=0 QTime=2
> ==============================================
> At this log you can see it didn't go through my requestHandler named spell
> but when I try this
Your request went to the /select handler, not the /spell handler. The
shards.qt parameter controls where the request goes for *distributed*
queries, not standard queries.
I do not see a method in the documentation for the PHP library that sets
the request handler path. In SolrJ, this is the setRequestHandler method.
http://lucene.apache.org/solr/4_7_0/solr-solrj/org/apache/solr/client/solrj/SolrQuery.html#setRequestHandler%28java.lang.String%29
If you cannot set the request handler path to "/spell" instead of the
default "/select" then you would need to enable 'handleSelect' on the
<requestDispatcher> element in solrconfig.xml and send a "qt" parameter
set to "/spell". This capability was disabled in newer Solr releases
because it allows *any* request handler to be used with /select, even
/update, which is a potential exploit.
I would recommend asking for some help on whatever support resources are
available on the PHP client, and you may need to file a bug on that client.
Thanks,
Shawn