2012-06-25 113 views
-1

我想使用price.facet.range,但它不能正常工作,它总是返回筛选结果Solr的范围不过滤

索引:

<field name="price" type="sdouble" indexed="true" stored="false" multiValued="true" /> 

solrDoc.addField("price", 22.99); 

创建查询:

query.addNumericRangeFacet("price", 0.0 ,100.0, 0.01); 

创建查询:

q=mobile+phone& 
fl=productId+score& 
payload=true& 
payload.fl=full_text& 
facet.range=price& 
f.price.facet.range.start=0.0& 
f.price.facet.range.end=100.0& 
f.price.facet.range.gap=0.01& 
facet=true& 
/... 

回答

2

我找到了解决方案

query.addFilterQuery("price:[0 100]");

+1

没错。您错误地将faceting功能理解为可以过滤结果的功能,但它是分开的。过滤查询和刻面,​​以实现“多面导航”。我新来堆栈溢出,但如果它有一个功能来标记这个问题为“无效”,那么我认为这是适当的。 –

+1

谢谢你的解决方案谢尔盖。我正在寻找这个相同的东西。 – user2250246

0

除非您明确排除您没有的过滤器查询,否则Faceting总是对过滤结果进行操作('fq'&'q'params)。您是否可以通过Solr中的exampledocs数据重现问题,或者使用易于其他人验证的设置来重现问题?

+0

我送他一个过滤器值Q =移动+电话,并要过滤的价格范围内,你知道如何使用facet.range?你的意思是“exampledocs data”,我的solr增加了数据? – Sergey