Solr 多选事实忽略其他选定的方面

标签 solr multi-select facet

我正在研究 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:red&fl=*,分数

Solr 可以做到这一点吗?我还没有遇到过任何这样的例子,我担心解决方案是在前端使用缓存来处理它,但这不起作用。

编辑

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

颜色:
[x] 红色 (10)
[ ] 蓝色 (10)
[ ] 绿色 (10)

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

但我实际得到的是:

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

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

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

最佳答案

不要排除 size 的构面,使用 facet.mincount=0facet.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

关于Solr 多选事实忽略其他选定的方面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20622859/

相关文章:

sql - 查找所有共同作者 - 多对多映射表的分面/分组

arrays - 如何在Elasticsearch中按值数组查询/过滤精确计数?

pdf - Solr PDF 搜索 : "Go to page" function

Solr - 如何在 Solr 6.6 中设置默认运算符?

javascript - 无法使用数据实时搜索 + jquery 多个填充 Bootstrap 选择

swing - JcomboBox 多选

javascript - 使用 Javascript 在多选中设置选定索引

Azure 搜索 : return top documents for each facet

jakarta-ee - Tomcat 或 Glassfish 上的 Solr?

algorithm - 需要 Krovetz 词干提取算法 ( KStemming) 帮助