私は 3.x から 4.x に移行しており、いくつかのクエリを実行して、すべてが以前と同じように機能することを確認しています。ただし、「galaxy s3」というクエリの結果ははるかに少ないことがわかりました。3.x では numFound=1628、4.x では numFound=70 です。
関連するスキーマ部分は次のとおりです。
<fieldtype name="text_pt" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="false">
<analyzer type="index">
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="-" replacement="IIIHYPHENIII"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="IIIHYPHENIII" replacement="-"/>
<filter class="solr.ASCIIFoldingFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" preserveOriginal="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="false" words="portugueseStopWords.txt"/>
<filter class="solr.BrazilianStemFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="-" replacement="IIIHYPHENIII"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="IIIHYPHENIII" replacement="-"/>
<filter class="solr.ASCIIFoldingFilterFactory" />
<filter class="solr.SynonymFilterFactory" ignoreCase="true" synonyms="portugueseSynonyms.txt" expand="true"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" preserveOriginal="1" catenateNumbers="0" catenateAll="0" protected="protwords.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="false" words="portugueseStopWords.txt"/>
<filter class="solr.BrazilianStemFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldtype>
このクエリに含まれるシノニムは次のとおりです。
siii, s3
galaxy, galax
デフォルトの検索演算子は AND (両方のバージョンで、4.x で非推奨であっても) で、デバッグの出力は次のとおりです。
SOLR 3.x
<str name="parsedquery">+(title_search_pt:galaxy title_search_pt:galax)
+MultiPhraseQuery(title_search_pt:"(sii s3 s) 3")</str>
SOLR 4.x
<str name="parsedquery">+((title_search_pt:galaxy title_search_pt:galax)/no_coord)
+(+title_search_pt:sii +title_search_pt:s3 +title_search_pt:s +title_search_pt:3)/str>
奇妙なことに、「galaxy s3」のような結果は返されません。これはデバッグ クエリです。
必須句に一致しない (+title_search_pt:sii +title_search_pt:s3 +title_search_pt:s +title_search_pt:3)
(NON-MATCH) 必須/禁止句の条件を満たさない、必須句に一致しない ( title_search_pt:sii)
(NON-MATCH) 一致する用語がない
(MATCH) weight(title_search_pt:s3 in 1834535)
(MATCH) weight(title_search_pt:s in 1834535)
(MATCH) weight(title_search_pt:3 in 1834535)
s および s3 と OR する必要がある場合、 sii はどのように必要ですか?
分析出力は、sii がトークンの位置 2 を持っていることを示しています。
galaxy sii 3
galax s3
s