次のフィールド宣言を持つスキーマで Solr 3.5 を使用しています。
<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 のフィールドで 1 つの用語を検索する必要があるため、このオプションはあまり優先されません。
ありがとう。