Solr では、solr.ShingleFilterFactory を使用してトークンをマージすると、min/maxShingleSize とマージするトークンに応じて、複数のシングルが生成される場合があります。このため、検索に失敗します。検索が機能するように、複数のトークンを 1 つにマージするにはどうすればよいですか。ここに私の設定があります:
<fieldType name="text_ngram" class="solr.TextField">
<analyzer type="index">
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\b \b" replacement=""/>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"/>
<filter class="solr.ShingleFilterFactory" tokenSeparator="" minShingleSize="2" maxShingleSize="7" outputUnigrams="false"/>
<filter class="solr.LengthFilterFactory" min="6" max="7"/>
</analyzer>
</fieldType>
クエリ name_ngram:"our G20 9NS" のデバッグ出力は次のとおりです。
"debug": {
"rawquerystring": "name_ngram:\"our G20 9NS\"",
"querystring": "name_ngram:\"our G20 9NS\"",
"parsedquery": "PhraseQuery(name_ngram:\"rg209ns g209ns\")",
"parsedquery_toString": "name_ngram:\"rg209ns g209ns\"",
"explain": {},
事前にサンクス、