Solr Multi Select Facting忽略其他选定的Facets

时间:2013-12-16 23:11:15

标签: solr multi-select facets

我正在研究solr搜索结果的方面。我无法让方面显示我想要的方式。我希望能够在一个方面中选择一个值,并且只有在其他方面更新计数而不会在方面计数为0时取消值。
例 我搜索了一件衬衫,这里是他们的计数返回的方面:

颜色:
[]红色(10)
[]蓝色(10)
[]格林(10)

尺寸:
[]小(5)
[]中(10)
[]大(10)

现在,如果我选择红色,我希望我的方面更新:

颜色:
[x]红色(10)
[]蓝色(10)
[]格林(10)

尺寸:
[]小(0)
[]中(5)
[]大(5)

我有它的工作,所以选择一个颜色并不限制颜色方面的选项,但我无法弄清楚如何通过调整我得到的排除方式来获得显示大小的正确方面:

尺寸:
[]中(5)
[]大(5)
或:
尺寸:
[]小(5)
[]中(10)
[]大(10)

我已经尝试添加facet.limit = -1但它似乎没有做任何事情,也许是一个错误因为我期望这样做我正在寻找的东西?我正在运行solr 4.3.1。

这是我的疑问:
Q =椅子&安培;行数= 10安培;开始= 0&安培; facet.limit = -1&安培; DEFTYPE = edismax&安培; facet.field =彩色&安培{EX = colortag!}; facet.field =大小&安培{EX = sizetag!};小面=真安培; FQ =颜色{标签= colortag!}:红色&安培; FL = *,得分

Solr可以实现吗?我没有遇到任何这方面的例子,我担心解决方案是在前端处理它,缓存无效。

修改

所以我添加了facet.mincount = 0,它确实给了我想要的东西。问题是,通过将mincount设置为0,我得到的所有方面都不属于搜索结果。所以这就是我想要的:

颜色:
[x]红色(10)
[]蓝色(10)
[]格林(10)

尺寸:
[]小(0)
[]中(5)
[]大(5)

但我实际得到的是:

颜色:
[x]红色(10)
[]蓝色(10)
[]绿色(10)
[]橙色(0)
[]紫色(0)
[]粉红色(0)

尺寸:
[]小(0)
[]中(5)
[]大(5)
[] X-Large(0)
[] XX-大(0)

所以现在我添加了与查询字词不匹配的颜色和大小。我意识到它工作正常,但这不是我希望它工作的方式。我可以采取另一种方法吗?我确实意识到我可以进行一次调用以获得没有任何选定方面的初始结果,然后再进行第二次调用以获得过滤的方面,然后比较并构建正确的结果。我宁愿不做双重呼叫,所以任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

请勿排除size方面,facet.mincount=0使用facet.limit

   q=chair&rows=10&start=0&facet.limit=-1&defType=edismax&facet.field={!ex=colortag}color&facet.field=size&facet=true&fq={!tag=colortag}color:red&fl=*,score

答案 1 :(得分:0)

这不是绝对的解决方案。使用facet.mincount = 0,尝试设置facet.size.mincount = 0。

您可以在此处详细了解:http://wiki.apache.org/solr/SimpleFacetParameters