2016-10-19 2 views
3

У нас есть наш анализатор индексов, настроенный с помощью solr.StopFilterFactory. Поэтому стоп-слова не индексируются.Solr - настройка SeachCandon SeachCandon с минимальным соответствием = 100% и по-прежнему игнорировать слова остановки из поискового запроса

Мы также наш анализатор запросов настроены solr.StopFilterFactory, как мы хотели игнорируемые слова, которые будут игнорироваться с точки зрения поисковых запросов

<analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/>   
    <filter class="solr.StopFilterFactory" 
      ignoreCase="true" 
      words="lang/stopwords_en.txt" 
      enablePositionIncrements="true" 
      /> 
    ... ... 

В solrconfig.xml, выберите SearchHandler настроен для использования параметра SearchComponent минимальный матч = 100%

<requestHandler name="/select" class="solr.SearchHandler"> 
    <lst name="defaults"> 
     <str name="echoParams">explicit</str>   
     <int name="rows">10</int> 
     <str name="mm">100%</str> 
     <str name="q.alt">*:*</str> 
    ... ... 

Это приводит в некоторых из наших нескольких поисковых запросов слова не возвращать никакого результата, например, «обряд в го э дождь ". Из-за настроек выше «in» и «the» не индексируются, но минимальное соответствие делает их обязательными, даже если анализатор запросов настроен на удаление стоп-слов.

Есть ли какие-либо настройки, которые позволят нам достичь этого?

+0

проверить, может ли параметр mm.autorelax помочь https://cwiki.apache.org/confluence/display/solr/The+Extended+DisMax+Query+Parser –

+1

, как указано ниже, mm.autorelax доступен для solr> = 6 –

ответ

2

В этой ситуации вы должны учитывать различные fieldTypes, участвующие в запросе, различая эти две категории: solr.TextField типы, определенные с одним и тем же фильтром остановки, и другие поля. Различные используемые типы зависят от полей запроса, запрошенных с помощью параметра qf.

Если запрос содержит стоп-слова и 2 категории полей смешаны в qf, вы получите эту проблему, потому что всегда будет оставаться требуемое предложение, пытающееся совместить секундомер в поле «без остановок» (например, числовое поле или текстовое поле без фильтра остановки), если вы не установите нижний mm.

mm.autoRelax пары для edismax парсера предназначена для обработки этого неправильного поведения и доступно с Solr 6.0 (SOLR-3085):

Если это правда, то количество статей требуется (минимум должен соответствовать) будет автоматически расслаблено если условие удалено (например, стоп-словами фильтром) из некоторых, но не всех полей qf. Используйте этот параметр как обходное решение , если вы испытываете, что запросы возвращают нулевые образы из-за неравномерного удаления паузы между полями qf.

Если вы не можете использовать mm.autoRelax и до тех пор, как вам нужно mm=100%, вам придется установить qf только с текстовыми полями, которые используют же остановки фильтра (же Титулы и словарь), чтобы гарантировать последовательное поведение когда запрос содержит временные слова.

+1

Различные типы полей в 'qf' были нашей проблемой. Одно поле было строкой (без фильтра остановки), а другое - 'text_en_splitting_tight' (имело стоп-фильтр, но отсутствует' enablePositionIncrements = true'). Создание поля типа всех полей для типа с секундомером с одинаковыми настройками решило проблему. –

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

  • Нет связанных вопросов^_^