首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择带有黑光的多个面

选择带有黑光的多个面
EN

Stack Overflow用户
提问于 2016-01-20 12:42:18
回答 1查看 272关注 0票数 0

我试图实现同一类别的多个方面的选择,因此当用户选择类别A的选项A1和选项A2以及B类的选项B1时,他应该得到的结果是(A1 A2)和(B1)。

我正在使用solr和blacklight (5.3.0版)。

我尝试使用blacklight_advanced_search (v5.1.2) gem,并更改了高级的视图。我成功地实现了该视图,但是solr返回的结果仍然是A1 A2和B1。

如何使solr在同一类别的各方面之间使用,而不是和?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-04-07 14:48:37

Solr 5.4.0;Ruby2.2.4;Rails:4.2.6这里分类为A=color和B=productBrand检查如何为我检查过滤器查询fq

fq ={“!f=color}Blue”、"{!term f=color}Black“、"{!term f=productBrand}Apple”

但是在引用https://github.com/sul-dlss/revs的Blacklight示例之后,它们的过滤器查询看起来也类似

“fq”=>[“”(( -visibility_isi:* TO *) OR visibility_isi:1)“、"{!raw f=format_ssim}黑白底片”、"{!raw f=marque_ssim}Ford“、"{!raw f=marque_ssim}Chevy"]。

但这不适合我,还有blacklight_advanced_search --版本问题

因此,我修改了request.rb文件

config.add_facet_field‘产品品牌’,标签:‘品牌’,:标签=>‘s-tag’,:ex =>‘s-tag’ config.add_facet_field 'color',标签:'color',:tag => 'Color‘,:ex => 'color'

编辑完文件后,我得到了这个fq,它可以按我的要求工作(类似于您的要求),选择Blue或Black和Apple

"{!tag=some-tag}productBrand:(Apple) fq=“{!tag=color}color:(蓝色黑色)”

可能不是编辑request.rb的好方法,但无法找到另一种方法

见\ruby\gems\2.2.0\gems\blacklight-6.0.2\lib\blacklight\solr中的request.rb

参考文献:http://yonik.com/multi-select-faceting/

示例代码:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34900392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档