【发布时间】:2017-07-03 12:09:22
【问题描述】:
我正在处理产品目录中的一些动态属性,在一个字段下编制索引(类似于this)。一个简单的示例如下所示:
{id: 1, DYN_ATT:Color||Green, DYN_ATT:Size||Small}
{id: 2, DYN_ATT:Color||Red, DYN_ATT:Size||Small}
{id: 3, DYN_ATT:Color||Green, DYN_ATT:Size||Small}
{id: 4, DYN_ATT:Color||Red, DYN_ATT:Size||Large}
但是,好像这些都是不同的方面一样,启用多选似乎是不可能的。
例如,假设用户在 UI 中选择了 Green 颜色方面:
[ ]Red
[ ]Green
----------
[ ]Small
[ ]Large
生成的构面应显示Color 的所有可能值(以允许用户选择Red 或Green。但应根据在另一个(逻辑)中选择的Green 过滤Size 构面方面。
[ ]Red
[x]Green
----------
[ ]Small
有没有办法做到这一点? 我还没有找到任何答案,并且怀疑可能需要不同的方法。 不幸的是,数据中的属性类型差异很大。
这些都不起作用:
fq={!tag=DYNTAG}DYN_ATT:"Color||Green"&facet.field={!ex=DYNTAG}DYN_ATT
这会为Size 产生太多结果。 [ ]Large 的构面不应该可用,但会被返回。如果用户选择它,这两个过滤器将不相交并且不会产生任何结果。
fq={!tag=DYNTAG}DYN_ATT:"Color||Green"&facet.field=DYN_ATT
这会产生太少的结果,不包括来自构面的Red,因此用户将无法在颜色上进行多选:
[x]Red
[x]Green
有什么想法吗?
【问题讨论】:
标签: indexing solr facet faceted-search