Определение терминов для фасетных полей в solr

Базирую на facet.field и у меня одна ситуация. В моем магазине есть базовые продукты и варианты, когда я использую facet.field, я получаю количество базовых продуктов и вариантов:

Category:
   Chairs(30) <- this is count of base products and variants
   Tables(20) <- this is count of base products and variants

Я хочу добавить некоторые термины для facet.field, чтобы этот аспект возвращал количество только вариантов, каждый продукт имеет поле, такое как «productType»: «baseProduct» или «productType»: «variantProduct». Я хочу использовать эти поля.

Любые идеи? как я могу использовать это в каком-то запросе, пожалуйста, помогите


person firstontheworld    schedule 15.05.2018    source источник


Ответы (1)


Вы можете использовать facet.pivot для получения отдельных счетчиков. для каждого типа:

&facet.pivot=productType,category

Вы также можете использовать JSON Facet API для выполнения два отдельных аспекта:

{
  base: {
     type: terms,
     field: category,
     domain: { filter: "productType:baseProduct" }
  },
  variant: {
     type: terms,
     field: category,
     domain: { filter : "productType:variantProduct" }
   }
}
person MatsLindh    schedule 15.05.2018
comment
спасибо за ответ, но я хочу повлиять на эти значения facet_counts:{facet_queries:{}, facet_fields:{category:[C Chairs,28, Tables,20]}, Могу ли я использовать некоторые фильтры? как fq={!tag=pr}productType:baseProduct&facet.field={!ex=pr}category - person firstontheworld; 15.05.2018
comment
В этом случае вы явно говорите, что не хотите, чтобы фильтр влиял на категорию. Если вы хотите отфильтровать результирующий набор только для одного набора документов, достаточно использовать только fq=productType:baseProduct и ничего больше. - person MatsLindh; 15.05.2018
comment
Извини за поздний ответ. Я не могу использовать простой фильтрующий запрос, потому что я хочу получить все продукты на своей странице из solr (базовые продукты и варианты), но я хочу повлиять только на номер счетчика, но я хочу, чтобы все они были на моей странице продукта. Я хочу, чтобы количество отображало только количество базовых продуктов, сейчас количество базовых продуктов и вариантов. - person firstontheworld; 25.05.2018
comment
В этом случае вам придется использовать метод filter, как показано в приведенном мной примере JSON Facet API. Это отфильтрует набор документов, используемых только для этого конкретного аспекта. - person MatsLindh; 25.05.2018
comment
спасибо, это может работать, но у меня старая версия solr, я не могу использовать JSON Facet API :( - person firstontheworld; 25.05.2018
comment
Тогда пора планировать обновление :-) - person MatsLindh; 25.05.2018