Взгляните на Solr wiki . Там написано:
Добавьте этот фильтр в анализатор индекса, но не в анализатор запросов.
Попробуйте выполнить запрос с помощью debugQuery=on
после того, как вы изменили схему, чтобы отразить вики-инструкции:
<str name="querystring">text:*Stack*</str>
<str name="parsedquery">text:#1;*kcatS*</str>
Как видите, ReversedWildcardFilterFactory
меняет ваш запрос, даже если он не входит в цепочку вашего анализатора запросов, с fieldType, подобным следующему:
<fieldType name="text" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ReversedWildcardFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Кроме того, LowerCaseFilterFactory
не запускается для вашего запроса (S
не является строчным в разобранном запросе). То же самое происходит для ASCIIFoldingFilterFactory
.
Взгляните здесь чтобы узнать больше:
Solr не анализирует запросы, в которых есть символы подстановки. Да это
означает, что фильтр LowerCaseFilterFactory, во время индексации,
превращает стек в стек, но при выполнении запросов этого не происходит, несмотря на
Дело в том, что фильтры определены правильно. И именно поэтому вы не
получить результаты поиска.
Самое простое решение, которое приходит мне в голову, это сделать ваши запросы строчными на стороне клиента, прежде чем отправлять их в Solr. Вам также следует учитывать, что ASCIIFoldingFilterFactory
также не срабатывает. Вам это действительно нужно?