Есть ли способ включить стоп-слова при поиске точных фраз в Solr? - PullRequest
11 голосов
/ 21 апреля 2010

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

например. «просто так» также должен искать «это».

Возможно ли это?

Ответы [ 2 ]

16 голосов
/ 21 апреля 2010

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

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

2 голосов
/ 05 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...