Я работаю с некоторыми динамическими атрибутами в каталоге продуктов, индексируется под одним полем (аналогично this). Простой пример будет выглядеть следующим образом:Solr multi-select faceting с динамическими полями?
{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}
Однако, это, кажется, невозможно включить множественный выбор, как если бы они все разные грани.
Например, говорят, что пользователь выбирает Green
Color фасет в пользовательском интерфейсе:.
[ ]Red
[ ]Green
----------
[ ]Small
[ ]Large
Полученные фасеты должны показать все возможные значения для Color
(чтобы позволить пользователю выбрать Red
ИЛИ Green
Но следует фильтровать Size
фаска на основе Green
выбрана в другой (логической) фаске.
[ ]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
Любые идеи?