[英]select multiple facets with blacklight
我正在尝试实现同一类别的多个方面的选择,因此当用户选择类别A的选项A1和选项A2以及类别B的选项B1时-他应该获得的结果是(A1 或 A2)AND(B1 )。
我正在使用solr和blacklight(v5.3.0)。
我尝试使用blacklight_advanced_search(v5.1.2)gem,并更改了高级视图。 我成功实现了该视图,但是solr返回的结果仍然是A1 AND A2 AND B1。
如何使Solr在同一类别的构面之间使用OR而不是AND?
谢谢
Solr 5.4.0; Ruby:2.2.4; Rails:4.2.6在这里,类别A =颜色和B = productBrand检查您的过滤器查询Fq的方式
fq = [{“!term f = color}蓝色”,“ {!term f = color}黑色”,“ {!term f = productBrand} Apple”]
但是在从https://github.com/sul-dlss/revs引用Blacklight示例后,它们的过滤器查询也看起来类似
“FQ”=> [ “((:-visibility_isi:[* TO *])OR visibility_isi:1)”, “{!原料F = format_ssim}黑色和白色的底片”,“{原料F = marque_ssim!}福特”,“ {!raw f = marque_ssim}雪佛兰”]
但它对我不起作用,以及blacklight_advanced_search --version问题
因此,我更改了request.rb文件-根据要求更改操作append_filter_query还要编辑catalog.rb
config.add_facet_field'productBrand',标签:'Brand',:tag =>'some-tag',:ex =>'some-tag'
config.add_facet_field'color',标签:'Color',:tag =>'color',:ex =>'color'
编辑文件后,我得到此fq,它正在按我希望的方式工作(类似于您的要求),选择蓝色或黑色,然后选择苹果
fq = [“ {!tag = color}颜色:(蓝黑色)”,“ {!tag = some-tag}产品品牌:(苹果)]
可能不是编辑request.rb的好方法,但找不到其他方法
请参阅\\ ruby \\ gems \\ 2.2.0 \\ gems \\ blacklight-6.0.2 \\ lib \\ blacklight \\ solr中的request.rb
参考: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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.