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.
>