2

我正在研究 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=chair&rows=10&start=0&facet.limit=-1&defType=edismax&facet.field={!ex=colortag}color&facet.field={!ex=sizetag}size&facet=true&fq={!tag=colortag}color:红色&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-Large (0)

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

4

2 回答 2

2

不排除size, 使用facet.mincount=0withfacet.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
于 2013-12-17T07:36:01.297 回答
0

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

您可以在这里阅读更多信息:http ://wiki.apache.org/solr/SimpleFacetParameters

于 2013-12-17T02:38:47.117 回答