Я использую Solr 4.6.0 и пытаюсь сгруппировать наиболее частые термины по годам. Поскольку возможно, что мои игнорируемые слова могут часто меняться, я не применяю стоп-слова во время индексации. Вместо этого во время запроса используются все динамические списки слов, такие как игнорируемые слова, ключевые слова и синонимы. Но хотя список запрещенных слов включает такие термины, как «из» и «the», они все равно отображаются в списке результатов (см. Результаты).
Вопрос: как получить результаты с фасеткой и фильтром по запрещенным словам, если я использую StopFilterFactory только во время запроса?
Дополнительная информация
Если я использую StopFilterFactory во время индексации, все будет так, как ожидалось. Когда я запускаю свой запрос, такие термины, как «из» и «the», отфильтровываются.
Я также протестировал функциональность fieldtype text_en с помощью инструмента анализа администратора Solr, и результаты оказались ожидаемыми - «of» и «the» отфильтрованы. Это означает, что почему-то SearchHandler не вызывает правильный анализатор?
Запрос
http://ip:port/solr/collection1/select?q=*:*&rows=0&facet=true&facet.pivot=year,text
Результаты
[..]
<lst name="facet_pivot">
<arr name="year,text">
<lst>
<str name="field">year</str>
<int name="value">2009</int>
<int name="count">139</int>
<arr name="pivot">
<lst>
<str name="field">text</str>
<str name="value">of</str>
<int name="count">135</int>
</lst>
<lst>
<str name="field">text</str>
<str name="value">the</str>
<int name="count">135</int>
</lst>
<lst>
<str name="field">text</str>
<str name="value">and</str>
<int name="count">123</int>
[..]
Schema.xml
<field name="year" type="int" indexed="true" stored="true" />
<field name="text" type="text_en" indexed="true" stored="true" multiValued="true" />
[..]
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" />
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>