アプリケーションに solr があり、次のシナリオをカバーする必要があります: 3 つの値を持つフィールドがあります: コーヒー ショップ ドーナツ ショップ スポーツ ショップ
「コーヒーショップ」を検索すると、上記の値のいずれかを持つすべてのドキュメントが取得されるという問題。その理由は、すべてに「お店」があるからです。この検索動作を変更して、「コーヒー ショップ」を検索すると「コーヒー ショップ」のみを含むドキュメントが取得され、「ショップ」を検索すると上記の値がすべて含まれるドキュメントが取得されるようにしようとしています。以下は私のfieldType定義です
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
<filter class="solr.ReversedWildcardFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory"
splitOnNumerics="0"
stemEnglishPossessive="1"
splitOnCaseChange="1"
generateWordParts="1"
generateNumberParts="1"
catenateWords="1"
catenateNumbers="1"
catenateAll="0"
preserveOriginal="1"
protected="protwords.txt"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords.txt"
enablePositionIncrements="true" />
<filter class="solr.HunspellStemFilterFactory"
dictionary="en_US.dic"
affix="en_US.aff"
ignoreCase="true" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.TrimFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory"
splitOnNumerics="0"
stemEnglishPossessive="1"
splitOnCaseChange="1"
generateWordParts="1"
generateNumberParts="1"
catenateWords="0"
catenateNumbers="0"
catenateAll="0"
preserveOriginal="1"
protected="protwords.txt"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords.txt"
enablePositionIncrements="true" />
<filter class="solr.HunspellStemFilterFactory"
dictionary="en_US.dic"
affix="en_US.aff"
ignoreCase="true" />
</analyzer>
</fieldType>
ありがとうございました