2015-08-15 4 views
0

Я стараюсь не индексировать стоп-слова для всех текстовых полей.Solr stopwords индексируется, но возвращает 0 результатов

управляемому-schema.xml выглядит следующим образом:

<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.EnglishPossessiveFilterFactory"/> 
     <filter class="solr.PorterStemFilterFactory"/> 
    </analyzer> 
</fieldType> 
<field name="ItemDesc" type="text_en" multiValued="false" indexed="true" stored="false"/> 

Однако, когда я смотрю на описание Solr поле он показывает мне стоп-слова на вкладке «нагрузки термин» информация screenshot

Однако когда я нажимаю на слово «on», оно дает мне 0 результатов. screenshot

Значит, solr индексирует стоп-слова или нет?

Я посмотрел на документацию Solr, и он говорит: «При нажатии этой кнопки покажет верхние N термины, которые в индекс для этого поля» , что означает, что стоп-слова, как «на» индексируются, однако, когда я нажимаю на слово он возвращает 0 результатов только для всех стоп-слов.

+1

Возможно ли, что слово 'on' stop проиндексировано из какого-либо другого поля? Вы проиндексировали данные с той же конфигурацией, как указано выше, это не то, что вы проиндексировали данные, а затем добавили фильтр продолжительности в fieldType. – YoungHobbit

+0

Вы должны расширить свой вопрос. Я бы добавил определение поля и результат выполнения запроса с queryDebug = true. Неясно, связано ли поле, которое вы запрашиваете, с этим типом поля, и если в поле analysys вы видите это поле/fieldType – Andrea

+0

Хорошо, я также добавил поле. @abhishekbafna Снимок экрана всех остановленных слов показан только для этой конкретной области. – happa

ответ

0

Итак, я, наконец, выяснил проблему. Файл схемы правильно фильтрует временные слова. Проблема заключается в том, что PorterstemFilterfactory содержит ключевые слова, такие как «один», «на» и «использовать» для «нас», и индексирование их делает его похожим на то, что стоп-слова не отфильтровываются. Я не знаю, является ли это ошибкой в ​​Porterstem, или это должно быть так.

+0

Это нормальное поведение. Если вы хотите этого избежать, вы можете повторно использовать 'StopFilterFactory' после вашего' PorterStemFilterFactory'! – alexf

Смежные вопросы