Вы должны использовать один стеммер для analyzer
, а EnglishPorterFilterFactory
не рекомендуется, поскольку @Marko уже упоминалось. Поэтому вы должны удалить это из анализаторов.
Я использовал SnowballPorterFilterFactory для анализаторов индекса и запросов -
<fieldType name="text_stem">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SnowballPorterFilterFactory"/>
<!-- other filters -->
</analyzer>
</fieldType>
Определение fieldType самоочевидно, но на всякий случай:
Tokenizer solr.WhitespaceTokenizerFactory : эта операция разбивает предложения на слова, используя пробелы в качестве разделителей.
Фильтр solr.SnowballPorterFilterFactory : Этот фильтр будет применять алгоритм ствола к каждому слову (токену). В приведенном выше примере я выбрал алгоритм stemming. Solr предлагает несколько популярных алгоритмов стемминга.
Вы можете просмотреть несколько других алгоритмов stemming, например. HunspellStemFilterFactory , KStemFilterFactory тоже.