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 Timothy Tagge <tp...@gmail.com> on 2011/07/18 21:44:57 UTC

Solr search starting with 1 character spin endlessly

Solr version:  1.4.1

I'm having some trouble with certain queries run against my Solr
index.  When a query starts with a single letter followed by a space,
followed by another search term, the query runs endlessly and never
comes back.  An example problem query string...

/customer/select/?q=name%3At+j+reynolds&version=2.2&start=0&rows=10&indent=on


However, if I switch the order of the search values, putting the
longer search term before the single character, I get quick, accurate
results....

/customer/select/?q=name%3AReynolds+T+J&version=2.2&start=0&rows=10&indent=on

I've defined my name field as text.....
<field name="name" 	type="text" indexed="true" stored="true" required="true" />

Where text is defined as....
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory"
synonyms="customer-synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="stopwords.txt"
                enablePositionIncrements="true"
                />
        <filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="1" catenateWords="1"
catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory"
language="English" protected="protwords.txt"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory"
synonyms="customer-synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="stopwords.txt"
                enablePositionIncrements="true"/>
        <filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="1" catenateWords="0"
catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory"
language="English" protected="protwords.txt"/>
      </analyzer>
    </fieldType>

Am I making a simple mistake somewhere?

Thanks for your help.

Tim T.

Re: Solr search starting with 1 character spin endlessly

Posted by Yonik Seeley <yo...@lucidimagination.com>.
On Mon, Jul 18, 2011 at 3:44 PM, Timothy Tagge <tp...@gmail.com> wrote:
> Solr version:  1.4.1
>
> I'm having some trouble with certain queries run against my Solr
> index.  When a query starts with a single letter followed by a space,
> followed by another search term, the query runs endlessly and never
> comes back.  An example problem query string...
>
> /customer/select/?q=name%3At+j+reynolds&version=2.2&start=0&rows=10&indent=on
>
>
> However, if I switch the order of the search values, putting the
> longer search term before the single character, I get quick, accurate
> results....
>
> /customer/select/?q=name%3AReynolds+T+J&version=2.2&start=0&rows=10&indent=on


Note that a query of name:t j reynolds
is actually equivalent to name:t default_field:j default_field:reynolds

You probably want a query of name:"t j reynolds"
or name:(t j reynolds)

The query probably doesn't hang, but may just take a long time if you
have a big index, or if you don't have enough RAM and the default
field isn't one that is normally searched (causing much real disk IO
to satisfy the query).

-Yonik
http://www.lucidimagination.com


> I've defined my name field as text.....
> <field name="name"      type="text" indexed="true" stored="true" required="true" />
>
> Where text is defined as....
> <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
>      <analyzer type="index">
>        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
>        <filter class="solr.SynonymFilterFactory"
> synonyms="customer-synonyms.txt" ignoreCase="true" expand="true"/>
>        <filter class="solr.StopFilterFactory"
>                ignoreCase="true"
>                words="stopwords.txt"
>                enablePositionIncrements="true"
>                />
>        <filter class="solr.WordDelimiterFilterFactory"
> generateWordParts="1" generateNumberParts="1" catenateWords="1"
> catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
>        <filter class="solr.LowerCaseFilterFactory"/>
>        <filter class="solr.SnowballPorterFilterFactory"
> language="English" protected="protwords.txt"/>
>      </analyzer>
>      <analyzer type="query">
>        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
>        <filter class="solr.SynonymFilterFactory"
> synonyms="customer-synonyms.txt" ignoreCase="true" expand="true"/>
>        <filter class="solr.StopFilterFactory"
>                ignoreCase="true"
>                words="stopwords.txt"
>                enablePositionIncrements="true"/>
>        <filter class="solr.WordDelimiterFilterFactory"
> generateWordParts="1" generateNumberParts="1" catenateWords="0"
> catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
>        <filter class="solr.LowerCaseFilterFactory"/>
>        <filter class="solr.SnowballPorterFilterFactory"
> language="English" protected="protwords.txt"/>
>      </analyzer>
>    </fieldType>
>
> Am I making a simple mistake somewhere?
>
> Thanks for your help.
>
> Tim T.
>