Solr-фильтр на агрегации Json Facet - PullRequest
0 голосов
/ 04 марта 2019

У меня есть случай использования, где мне нужно будет отфильтровать агрегированное значение из фасета.

Допускает ли это фазовый фильтр?

Пример: Получение суммы числового поля, которое больше нуля, группировка по стране

Итак, мой Джейсонфасет будет выглядеть как

json.facet={cty:{type:terms,field:country,facet:{sum_value:”sum(population)”}}}

В приведенном выше запросе мне нужно добавить фильтр, чтобы возвращать только те сегменты cty, где sum_value is >100

1 Ответ

0 голосов
/ 07 марта 2019

Ну, мы сталкивались с подобной задачей и раньше, и я бы сказал, что Solr не может фильтровать вычисленные значения.Либо вы можете получить весь фасет, установив предел равным -1, и тогда будет некоторая оболочка (WEB API), которую вам нужно переписать в поисковом приложении, которая отфильтрует список фасетов.

json.facet={cty:{type:terms,field:country,limit:-1,facet:{sum_value:”sum(population)”}}}

ИлиВы можете предварительно рассчитать сумму населения для каждой страны перед индексацией.Посмотрите на таблицу ниже.

| Страна | Население |Total_Population |

|C1 |12 |25 ||C1 |13 |25 ||С2 |14 |49 ||С2 |35 |49 |

Позже вы можете напрямую фильтровать поле Total_Population с помощью фильтра запросов.Кроме того, вы сэкономите много времени, не агрегируя в реальном времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...