У меня есть solr индекс рабочих мест.
некоторые задания появляются несколько раз, поскольку имеют несколько возможных местоположений.
Чтобы сгладить, я группирую результаты моего запроса по jobref.
У меня также есть различные партнеры, от которых я получаю работу. Я хочу предоставить количество рабочих мест на одного партнера, ПОСЛЕ группировки.
пока мой (урезанный) код выглядит так:
// create client(solr) instance
$client = new Solarium\Client($solr_config);
// get a select query instance
$query = $client->createSelect();
// query for all, for now
$query->setQuery('*:*');
// get the facetset component
$facetSet = $query->getFacetSet();
// create a facet field instance and set options
$facetSet->createFacetField('partners')->setField('partner');
// BUNCH OF CODE THAT ADDS FILTERQUIERIES ETC
// group jobs by jobref to avoid dupes (multiple locations)
$groupComponent = $query->getGrouping();
$groupComponent->addField('jobref');
$groupComponent->setLimit(1); // maximum number of items per group, only want the 1
$groupComponent->setNumberOfGroups(true);
// this executes the query and returns the result
$resultset = $client->select($query);
// get the grouped results
$groups = $resultset->getGrouping();
// get the facets
$facet = $resultset->getFacetSet()->getFacet('partners');
foreach ($facet as $value => $count) {
echo $value . ' [' . $count . ']<br/>';
}
$jobs = array();
// TODO: does this have to be so complicated??
foreach ($groups as $groupKey => $fieldGroup) {
$total_jobs = $fieldGroup->getNumberOfGroups();
foreach ($fieldGroup as $valueGroup) {
foreach ($valueGroup as $document) {
array_push($jobs, $document);
}
}
}
тем не менее, я вижу, что мои фасеты вычисляются до группировки, как если бы я добавил фильтр-запрос для конкретного партнера, мой фасет был больше, чем мой общий результат (сгруппированный). Как я могу рассчитать / получить аспекты после группировки ??
это использует солярий php
Задача ещё не решена.
Других решений пока нет …