0

Я пытаюсь реализовать выбор нескольких фасетов одной и той же категории, поэтому, когда пользователь выбирает вариант A1 и вариант A2 категории A и вариант B1 категории B, результаты, которые он должен получить, предназначены для (A1 ИЛИ A2) И (B1).
Я работаю с solr и blacklight (v5.3.0).
Я попытался использовать blacklight_advanced_search (v5.1.2) gem и изменил представление для продвинутого. Мне удалось реализовать представление для этого, но все же результаты, которые возвращает solr: A1 AND A2 AND B1.выберите несколько граней с черным цветом

Как можно использовать solr ИЛИ между гранями одной и той же категории вместо И?

благодаря

ответ

1

Solr 5.4.0; Ruby: 2.2.4; Рельсы: 4.2.6 здесь категория A = цвет и B = productBrand проверить, как ваш фильтр запроса FQ Для меня начальная

FQ = [{ "! Термин е = цвет} Синий", "{ ! термин е = цвет} черный», "{! термин е = productBrand} Яблоко"]

Но после того, как ссылаются Blacklight примеров из https://github.com/sul-dlss/revs их фильтр запрос также похож

"fq" => ["((: -visibility_isi: [* TO *]) ИЛИ visibility_isi: 1)", "{! Raw f = format_ssim} черно-белые негативы", "{! Raw е = marque_ssim} Форд», "{! сырым е = marque_ssim} Chevy"], который работает

но не работает для меня, и blacklight_advanced_search проблема --version

Итак, я изменил request.rb файл - изменить действие append_filter_query в соответствии с требованиями редактировать Также catalog.rb

config.add_facet_field 'productBrand', этикетка: 'Марка',: тег => 'некоторые-тегов', экс => 'некоторый тег'

config.add_facet_field 'цвет', метка: 'Цвет',: тег => 'цвет', экс => 'цвет'

После редактирования файлов я получил эту FQ, который работает, как я хочу, чтобы это было (аналогично запросу ur) выбирает Bl у.е или черный и Apple,

FQ = [ "цвет {тег = цвет!} (синий черный)", «{!тег = некоторые тег} productBrand: (Apple)]

не может быть хорошим способом для редактирования request.rb, но не смог в состоянии выяснить, альтернативный способ

см request.rb в \ рубинового \ драгоценные камни \ 2.2.0 \ \ драгоценных камней Blacklight-6.0.2 \ Lib \ \ Blacklight ГУМЗ

Ref: http://yonik.com/multi-select-faceting/

Пример КОД:

def append_filter_query(query) 
    #$facet_value=query 
    unless query.nil? 
    $r= /.*}(.*)/.match(query)[1] 
    $l=/^({.*})/.match(query)[1] 
     if self['fq'].empty? 
      ampati() 
     else 
      $flag_new=false 
      self['fq'].each{|item| 
      $s=/.*}(.*\w)*:/.match(item)[1] 
      unless $l.include? $s 
       #$s=color 
       $flag_new=true 
      else 
       $flag_new=false 
      end 
      } 

      if $flag_new 
       ampati() 
      else 
       self['fq'].map!{|item| 
       $fac=/.*}(.*\w)*:/.match(item)[1] 
       if $l.include? $fac 
        item=/(.*\w)/.match(item)[1]<<" "<<$r<<")" 
       else 
        item 
       end 

       } 
      end 
     end 
    end 

    end 


    def ampati() 
    if $l.include? "color" 
     $c="{!tag=color}color:("<<$r<<")" 
     self['fq']<<$c 
    end 
    if $l.include? "productBrand" 
     $e="{!tag=some-tag}productBrand:("<<$r<<")" 
     self['fq']<<$e 
    end 
    end 
+0

Благодарим вас, что ответили. Пожалуйста, подумайте над редактированием сообщения, чтобы использовать обратные тики для форматирования встроенного кода. –

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