public function execute(Node $input, Recommendations $recommendations, RecommendationEngine $recommendationEngine)
{
$stack = $this->databaseService->getDriver()->stack('post_process_' . $recommendationEngine->name());
foreach ($recommendationEngine->getPostProcessors() as $postProcessor) {
if ($postProcessor instanceof CypherAwarePostProcessor) {
foreach ($recommendations->getItems() as $recommendation) {
$tag = sprintf('post_process_%s_%d', $postProcessor->name(), $recommendation->item()->identity());
$statement = $postProcessor->buildQuery($input, $recommendation);
$stack->push($statement->text(), $statement->parameters(), $tag);
}
} elseif ($postProcessor instanceof RecommendationSetPostProcessor) {
$statement = $postProcessor->buildQuery($input, $recommendations);
$stack->push($statement->text(), $statement->parameters(), $postProcessor->name());
}
}
try {
$results = $this->databaseService->getDriver()->runStack($stack);
return $results;
} catch (\Exception $e) {
throw new \RuntimeException('PostProcess Query Exception - ' . $e->getMessage());
}
}