我有刻面问题 . 想象一下这种情况 . 产品可以在多个类别中 . 这是分面的常见行为:
类别
-
Android(25)
-
iPhone(55)
-
其他(25)
现在,当我选择“Android”时,我使用“fq”=>“category:Android”进行新查询,我会得到:
类别
-
Android
-
iPhone(15)
-
其他(2)
但这意味着有15种产品,分别是“Android”和“iPhone” . 我想要这样的东西:(“Android”或“iPhone”)
类别
-
Android
-
iPhone(5)
-
其他(1)
意思是通过选择“Android(25)”获得25个结果,选择“iPhone(5)”获得另外5个,最后我将获得30个搜索结果 .
有没有人知道SOLR的分面是否可行?或者可能有多个查询并手动计算?
谢谢你的建议!
2 回答
尝试使用选项否定的新查询,例如
"fq" => "-category:Android"
- 然后您应该获得您正在寻找的方面计数 .根据您需要的所有排列,您可能需要查看query facets,以便获取任意查询的计数 . 例如,您可以执行
facet.query=category:("Android" OR "iPhone")
并获取键入category:("Android" OR "iPhone")
的计数结果 . 而且,您可以为您想要的任何数量的查询执行此操作 . 因此,在您的情况下,您可以通过直接字段和查询方面的某种组合来获得最终解决方案 .Edit :重新阅读你的问题,你可能还想查看tagging and excluding部分额外的
fq
,具体取决于你如何允许你的用户"select into"选择 . (文档中的示例与您的原始设置非常接近,但我不确定最终行为是否符合您的要求) .