Если вы хотите игнорировать специальные символы, попробуйте использовать следующий тип поля.
Это приведет к тому, что слова будут записаны в нижнем регистре и будут вставлены слова, исключая все специальные символы.
<fieldType name="string_sort" class="solr.TextField" positionIncrementGap="1">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory" catenateWords="1" />
</analyzer>
</fieldType>
Однако это не сработает для sAmerica, поскольку s не является специальным символом.
<filter class="solr.PatternReplaceFilterFactory" pattern="'s" replacement="" replace="all" />
Если это фиксированный шаблон, его необходимо заменить перед разделителем слов на.
Редактировать - Вы используете этот конфиг?
<fieldType name="string_sort" class="solr.TextField" positionIncrementGap="1">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.PatternReplaceFilterFactory" pattern="'s" replacement="" replace="all" />
<filter class="solr.WordDelimiterFilterFactory" catenateWords="1" />
</analyzer>
</fieldType>
Протестировал следующее с помощью анализа, и он выдает следующие токены -
КТ - Алгарве
LCF - 'Salgarve
PRF - Алгарве
WDF - Алгарве
Можете ли вы проверить через анализ.