我们正在使用带有以下字段声明的Solr 3.5模式:
当我们发送这样的查询时:
Solr返回结果。
当我们运行此查询时,仍然会得到结果:
<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>
当我们发送这样的查询时:
field1:"term1"
Solr返回结果。
当我们运行此查询时,仍然会得到结果:
field1:"term1" AND (field2:term2 OR field3:term2)
虽然term2是停用词,而term1是常规词汇。
但是当我们发送这样的查询:
field1:"term1" AND (field2:term2 OR field3:term2 OR field4:term2)
没有任何返回值。
我们还注意到,在执行以下操作时:
(field1:"term1" AND (field2:term2 OR field3:term2)) OR (field1:"term1" AND field4:term2)
这也可以,但是由于真正的查询需要在大约200个字段中搜索一个术语,因此这个选项不太受欢迎。
谢谢。