Мой тип поля выглядит следующим образом. По сути, я хочу создать Shingles и сопоставить его с запросом, даже если токены не упорядочены как индексы.
Например: если мой документ "United States v. Sobrilski". Запрос "Sobrilski v. United States" должен совпадать. Даже если запрос не завершен, например, «Собрильски против Юнайтед», он должен совпадать.
<fieldType name="text_space_ngram" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="(\.|\-|\[|\]|\(|\)|,)" replacement=" " />
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" maxShingleSize="20" outputUnigrams="true" tokenSeparator="_"/>
</analyzer>
<analyzer type="query">
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="(\.|\-|\[|\]|\(|\)|,)" replacement=" " />
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.FingerprintFilterFactory" separator="_" />
</analyzer>
</fieldType>