We use Solr 3.5 with a schema that has the following field declaration:
<fieldType name="fieldN" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" splitOnNumerics="0" preserveOriginal="1"/> <filter class="solr.LengthFilterFactory" min="2" max="256"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.PorterStemFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.LengthFilterFactory" min="2" max="256"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.PorterStemFilterFactory"/> </analyzer> </fieldType>
When we send the request as follows:
field1:"term1"
Solr returns the results.
When we run this query, we still get the results:
field1:"term1" AND (field2:term2 OR field3:term2)
While term2 is a stop word, and term1 is a regular word.
But when we send a request like this:
field1:"term1" AND (field2:term2 OR field3:term2 OR field4:term2)
Returns nothing.
We also noticed that when we do something like:
(field1:"term1" AND (field2:term2 OR field3:term2)) OR (field1:"term1" AND field4:term2)
also works, but since the real query should look for one term in about 200 fields, this option is less preferable.
Thanks.
source share