Я хочу стоп-слова, исключенные кроме тех случаев, когда критерий поиска в двойных кавычках
например, "точно так же, как тот" должен также искать "это".
Действительно ли это возможно?
Это зависит от конфигурации поля, которое вы запрашиваете.
Если конфигурация анализатора индексации включает StopFilterFactory, то стоп-слова просто не индексируются, поэтому вы не можете запрашивать их позже. Но поскольку Solr сохраняет положение терминов в индексе, вы можете дать ему указание увеличивать значение позиции оставшихся терминов, чтобы отразить тот факт, что изначально между ними были другие термины.
«enablePositionIncrements» здесь является ключом к достижению этого:
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
Если запрашивающий анализатор также имеет StopFilterFactory, настроенный с такими же настройками, ваш запрос должен работать должным образом.
Подробнее см. По этой ссылке: http://www.lucidimagination.com/search/document/CDRG_ch05_5.6.18
Я также удачно использовал CommonGramsFilterFactory для достижения аналогичных результатов, поместив его в соответствующее место в объявлении fieldType.
<filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
Не уверен, насколько хорошо это работает с enablePositionIncrements = "true", включенным в StopFilterFactory. Вам также необходимо запустить solr 1.4, чтобы использовать это.