public function removeIrrelevant(NodeInterface $input, RecommendationEngine $engine, Recommendations $recommendations) { foreach ($recommendations->getItems() as $recommendation) { foreach ($engine->filters() as $filter) { if (!$filter->doInclude($input, $recommendation->item())) { $recommendations->remove($recommendation); } } } }
private function buildBlacklistedNodes(ResultCollection $result, RecommendationEngine $engine) { $set = []; foreach ($engine->getBlacklistBuilders() as $blacklist) { $res = $result->get($blacklist->name()); foreach ($res->records() as $record) { if ($record->hasValue($blacklist->itemResultName())) { $node = $record->get($blacklist->itemResultName()); if ($node instanceof Node) { $set[$node->identity()] = $node; } } } } return $set; }
public function execute(NodeInterface $input, Recommendations $recommendations, RecommendationEngine $recommendationEngine) { $this->stack = $this->databaseService->getDriver()->stack('post_process_' . $recommendationEngine->name()); foreach ($recommendationEngine->postProcessors() as $postProcessor) { if ($postProcessor instanceof CypherAwarePostProcessor) { foreach ($recommendations->getItems() as $recommendation) { $this->prepareQuery($input, $recommendation, $postProcessor); } } } try { $results = $this->databaseService->getDriver()->runStack($this->stack); $this->stack = null; return $results; } catch (\Exception $e) { throw new \RuntimeException('PostProcess Query Exception - ' . $e->getMessage()); } }
/** * @param \GraphAware\Common\Type\NodeInterface $input * @param \GraphAware\Reco4PHP\Result\Recommendations $recommendations * @param \GraphAware\Reco4PHP\Engine\RecommendationEngine $recommendationEngine * * @return \GraphAware\Common\Result\ResultCollection */ public function execute(NodeInterface $input, Recommendations $recommendations, RecommendationEngine $recommendationEngine) { $stack = $this->databaseService->getDriver()->stack('post_process_' . $recommendationEngine->name()); foreach ($recommendationEngine->postProcessors() 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); } } } try { $results = $this->databaseService->getDriver()->runStack($stack); return $results; } catch (\Exception $e) { throw new \RuntimeException('PostProcess Query Exception - ' . $e->getMessage()); } }
/** * @param \GraphAware\Reco4PHP\Engine\RecommendationEngine $recommendationEngine */ public function registerRecommendationEngine(RecommendationEngine $recommendationEngine) { $recommendationEngine->setDatabaseService($this->databaseService); $this->engines[$recommendationEngine->name()] = $recommendationEngine; }