2011-11-30 38 views
4

我有刻面问题。想象一下这种情况。产品可以在多个类别中。这是刻面共同的行为:Solr复杂的刻面

类别

  • 的Android(25)
  • iPhone(55)
  • 其他(25)

现在,当我选择 “Android” 的,我用“fq”=>“category:Android”做出新的查询,我会得到:

类别

  • 的Android
  • iPhone(15)
  • 其他(2)

但这意味着有15种产品,即在类别 “机器人” AND “iPhone”。我想是这样的:( “机器人” 或 “iPhone”)

类别

  • 的Android
  • iPhone(+5)
  • 其他(+1)

这意味着我将通过选择“Android(25)”和另外5个选择“iPhone(+5)”得到25个结果,因此最终我将获得30个搜索结果。

有没有人知道这是可能与SOLR的面?或者可能有多个查询并手动计算它?

感谢您的咨询!

+0

通过选择“Android”,您可以获得25个结果,其中15个也具有“iPhone”类别。如果添加“iPhone”,则不会得到30个结果。用AND你会得到15个结果。如果你使用OR,你会得到25 + 55的结果。 +5从哪里来? – morja

+0

“如果您使用OR,您将获得25 + 55个结果”=>如果Product可以恰好在一个类别中,那么情况就是如此。但在我的情况下,它可以在一个以上,所以或会给我30个结果.. – user987220

回答

3

尝试一个新的查询与否的选择,如"fq" => "-category:Android" - 你应该得到你正在寻找的方面计数。

+0

非常感谢!这就是它! – user987220

3

根据您需要的所有排列方式,您可能需要查看query facets,这些排列使您可以获得任意查询的计数。例如,您可以执行facet.query=category:("Android" OR "iPhone")并获得键入category:("Android" OR "iPhone")的计数结果。而且,你可以为你想要的任何数量的查询做到这一点。所以,就你的情况而言,你可能会得到一个最终的解决方案,它包含直接领域构面和查询构面的组合。

编辑:重读你的问题,你可能还需要寻找到tagging and excluding部分的额外fq,这取决于你如何让你的用户“选择到”的选择。 (文档中的示例与原始设置非常接近,但我不确定最终行为是否与您的愿望完全相同)。

+0

感谢您的建议,我一定会研究这些,但从nikhil500的答案正是我正在寻找.. – user987220