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 Mark Ferguson <ma...@gmail.com> on 2009/01/06 22:57:23 UTC

Unable to choose request handler

Hi,

In my solrconfig.xml file there are two request handlers configured: one
uses defType=dismax, and the other doesn't. However, it seems that when the
dismax request handler is set as my default, I have no way of using the
standard request handler . Here is the relevant part of my solrconfig.xml:

<requestHandler name="standard" class="solr.SearchHandler">
    <!-- default values for query parameters -->
     <lst name="defaults">
       <str name="echoParams">explicit</str>
     </lst>
  </requestHandler>

  <requestHandler name="dismax" class="solr.SearchHandler" default="true">
    <lst name="defaults">
     <str name="defType">dismax</str>
     <str name="echoParams">explicit</str>
    </lst>
  </requestHandler>


When I run a query with the parameters qt=standard&debugQuery=true, I can
see that it is still using the DismaxQueryParser. There doesn't seem to be
any way to use the standard request handler.

On the other hand, when I set the standard request handler as my default,
the behaviour is equally strange. When I specify no qt parameter at all, it
uses the standard request handler as it should. However, when I enter either
qt=standard or qt=dismax, it uses the dismax request handler!

So it appears that the only way I can choose the request handler I want is
to make the standard request handler my default, then specify no qt
parameter if I want to use it. Has anyone else tried this?

Mark

Re: Unable to choose request handler

Posted by Mark Ferguson <ma...@gmail.com>.
I apologize, entering the defType parameter explicitly has nothing to do
with it, this was a caching issue. I tested the different configurations
thoroughly, and this is what I've come up with:

  - When using 'dismax' request handler as default:
    - Queries are always parsed using the dismax parser, whether I use
qt=standard, qt=dismax, or qt=. It _does_ use the correct request handler,
because the echo'd params are correct for that handler. However, it seems to
always be using defType=dismax. I can tell this because when I use the
parameter debugQuery=true, I can see that it is creating a
DisjunctionMaxQuery.
  - When using 'standard' request handler as default:
    - The behaviour is as expected. When I enter no qt parameter or
qt=standard, it uses the standard request handler and doesn't use dismax for
the defType. When I use qt=dismax, it uses the dismax request handler and
dismax for the defType.

So the problem is when setting the default request handler to dismax, it
always uses defType=dismax (even though it uses the 'standard' request
handler). defType=dismax does not show up in the echo'd parameters, but I
can tell by using debugQuery=true (and the fact that I get no results when I
specify a field).

Can someone try reproducing this using the configuration I specified in my
first post? Sorry again for being confusing, I got sidetracked by the
caching issue.

Mark



On Tue, Jan 6, 2009 at 3:01 PM, Mark Ferguson <ma...@gmail.com>wrote:

> It seems that the problem is related to the defType parameter. When I
> specify defType=, it uses the correct request handler. It seems that it is
> using the correct request handler, but it is defaulting to defType=dismax,
> even though I have not specified that parameter in the standard request
> handler configuration.
>
>
> On Tue, Jan 6, 2009 at 2:57 PM, Mark Ferguson <ma...@gmail.com>wrote:
>
>> Hi,
>>
>> In my solrconfig.xml file there are two request handlers configured: one
>> uses defType=dismax, and the other doesn't. However, it seems that when the
>> dismax request handler is set as my default, I have no way of using the
>> standard request handler . Here is the relevant part of my solrconfig.xml:
>>
>> <requestHandler name="standard" class="solr.SearchHandler">
>>     <!-- default values for query parameters -->
>>      <lst name="defaults">
>>        <str name="echoParams">explicit</str>
>>      </lst>
>>   </requestHandler>
>>
>>   <requestHandler name="dismax" class="solr.SearchHandler" default="true">
>>     <lst name="defaults">
>>      <str name="defType">dismax</str>
>>      <str name="echoParams">explicit</str>
>>     </lst>
>>   </requestHandler>
>>
>>
>> When I run a query with the parameters qt=standard&debugQuery=true, I can
>> see that it is still using the DismaxQueryParser. There doesn't seem to be
>> any way to use the standard request handler.
>>
>> On the other hand, when I set the standard request handler as my default,
>> the behaviour is equally strange. When I specify no qt parameter at all, it
>> uses the standard request handler as it should. However, when I enter either
>> qt=standard or qt=dismax, it uses the dismax request handler!
>>
>> So it appears that the only way I can choose the request handler I want is
>> to make the standard request handler my default, then specify no qt
>> parameter if I want to use it. Has anyone else tried this?
>>
>> Mark
>>
>
>

Re: Unable to choose request handler

Posted by Mark Ferguson <ma...@gmail.com>.
Thanks, this fixed the problem. Maybe this parameter could be added to the
standard request handler in the sample solrconfig.xml, as it is confusing
that it uses the default request handler's defType even when not using that
handler. I didn't completely understand your explanation, though. Thanks for
the fix.

Mark


On Tue, Jan 6, 2009 at 3:40 PM, Yonik Seeley <ys...@gmail.com> wrote:

> On Tue, Jan 6, 2009 at 5:01 PM, Mark Ferguson <ma...@gmail.com>
> wrote:
> > It seems that the problem is related to the defType parameter. When I
> > specify defType=, it uses the correct request handler. It seems that it
> is
> > using the correct request handler, but it is defaulting to
> defType=dismax,
> > even though I have not specified that parameter in the standard request
> > handler configuration.
>
> defType only controls the default type of the main query (not the
> whole handler).
> Try defType=lucene
>
> -Yonik
>
> > On Tue, Jan 6, 2009 at 2:57 PM, Mark Ferguson <mark.a.ferguson@gmail.com
> >wrote:
> >
> >> Hi,
> >>
> >> In my solrconfig.xml file there are two request handlers configured: one
> >> uses defType=dismax, and the other doesn't. However, it seems that when
> the
> >> dismax request handler is set as my default, I have no way of using the
> >> standard request handler . Here is the relevant part of my
> solrconfig.xml:
> >>
> >> <requestHandler name="standard" class="solr.SearchHandler">
> >>     <!-- default values for query parameters -->
> >>      <lst name="defaults">
> >>        <str name="echoParams">explicit</str>
> >>      </lst>
> >>   </requestHandler>
> >>
> >>   <requestHandler name="dismax" class="solr.SearchHandler"
> default="true">
> >>     <lst name="defaults">
> >>      <str name="defType">dismax</str>
> >>      <str name="echoParams">explicit</str>
> >>     </lst>
> >>   </requestHandler>
> >>
> >>
> >> When I run a query with the parameters qt=standard&debugQuery=true, I
> can
> >> see that it is still using the DismaxQueryParser. There doesn't seem to
> be
> >> any way to use the standard request handler.
> >>
> >> On the other hand, when I set the standard request handler as my
> default,
> >> the behaviour is equally strange. When I specify no qt parameter at all,
> it
> >> uses the standard request handler as it should. However, when I enter
> either
> >> qt=standard or qt=dismax, it uses the dismax request handler!
> >>
> >> So it appears that the only way I can choose the request handler I want
> is
> >> to make the standard request handler my default, then specify no qt
> >> parameter if I want to use it. Has anyone else tried this?
> >>
> >> Mark
> >>
> >
>

Re: Unable to choose request handler

Posted by Yonik Seeley <ys...@gmail.com>.
On Tue, Jan 6, 2009 at 5:01 PM, Mark Ferguson <ma...@gmail.com> wrote:
> It seems that the problem is related to the defType parameter. When I
> specify defType=, it uses the correct request handler. It seems that it is
> using the correct request handler, but it is defaulting to defType=dismax,
> even though I have not specified that parameter in the standard request
> handler configuration.

defType only controls the default type of the main query (not the
whole handler).
Try defType=lucene

-Yonik

> On Tue, Jan 6, 2009 at 2:57 PM, Mark Ferguson <ma...@gmail.com>wrote:
>
>> Hi,
>>
>> In my solrconfig.xml file there are two request handlers configured: one
>> uses defType=dismax, and the other doesn't. However, it seems that when the
>> dismax request handler is set as my default, I have no way of using the
>> standard request handler . Here is the relevant part of my solrconfig.xml:
>>
>> <requestHandler name="standard" class="solr.SearchHandler">
>>     <!-- default values for query parameters -->
>>      <lst name="defaults">
>>        <str name="echoParams">explicit</str>
>>      </lst>
>>   </requestHandler>
>>
>>   <requestHandler name="dismax" class="solr.SearchHandler" default="true">
>>     <lst name="defaults">
>>      <str name="defType">dismax</str>
>>      <str name="echoParams">explicit</str>
>>     </lst>
>>   </requestHandler>
>>
>>
>> When I run a query with the parameters qt=standard&debugQuery=true, I can
>> see that it is still using the DismaxQueryParser. There doesn't seem to be
>> any way to use the standard request handler.
>>
>> On the other hand, when I set the standard request handler as my default,
>> the behaviour is equally strange. When I specify no qt parameter at all, it
>> uses the standard request handler as it should. However, when I enter either
>> qt=standard or qt=dismax, it uses the dismax request handler!
>>
>> So it appears that the only way I can choose the request handler I want is
>> to make the standard request handler my default, then specify no qt
>> parameter if I want to use it. Has anyone else tried this?
>>
>> Mark
>>
>

Re: Unable to choose request handler

Posted by Mark Ferguson <ma...@gmail.com>.
It seems that the problem is related to the defType parameter. When I
specify defType=, it uses the correct request handler. It seems that it is
using the correct request handler, but it is defaulting to defType=dismax,
even though I have not specified that parameter in the standard request
handler configuration.

On Tue, Jan 6, 2009 at 2:57 PM, Mark Ferguson <ma...@gmail.com>wrote:

> Hi,
>
> In my solrconfig.xml file there are two request handlers configured: one
> uses defType=dismax, and the other doesn't. However, it seems that when the
> dismax request handler is set as my default, I have no way of using the
> standard request handler . Here is the relevant part of my solrconfig.xml:
>
> <requestHandler name="standard" class="solr.SearchHandler">
>     <!-- default values for query parameters -->
>      <lst name="defaults">
>        <str name="echoParams">explicit</str>
>      </lst>
>   </requestHandler>
>
>   <requestHandler name="dismax" class="solr.SearchHandler" default="true">
>     <lst name="defaults">
>      <str name="defType">dismax</str>
>      <str name="echoParams">explicit</str>
>     </lst>
>   </requestHandler>
>
>
> When I run a query with the parameters qt=standard&debugQuery=true, I can
> see that it is still using the DismaxQueryParser. There doesn't seem to be
> any way to use the standard request handler.
>
> On the other hand, when I set the standard request handler as my default,
> the behaviour is equally strange. When I specify no qt parameter at all, it
> uses the standard request handler as it should. However, when I enter either
> qt=standard or qt=dismax, it uses the dismax request handler!
>
> So it appears that the only way I can choose the request handler I want is
> to make the standard request handler my default, then specify no qt
> parameter if I want to use it. Has anyone else tried this?
>
> Mark
>