Существует ли способ включать стоп-слова при поиске точных фраз в Solr?

Я хочу стоп-слова, исключенные кроме тех случаев, когда критерий поиска в двойных кавычках

например, "точно так же, как тот" должен также искать "это".

Действительно ли это возможно?

11
задан halfer 13 September 2018 в 22:09
поделиться

2 ответа

Это зависит от конфигурации поля, которое вы запрашиваете.

Если конфигурация анализатора индексации включает 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

16
ответ дан 3 December 2019 в 06:45
поделиться

Я также удачно использовал 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, чтобы использовать это.

2
ответ дан 3 December 2019 в 06:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: