GraphAware\Reco4PHP\Executor\DiscoveryPhaseExecutor::processDiscovery PHP Метод

processDiscovery() публичный Метод

public processDiscovery ( GraphAware\Common\Type\Node $input, array $engines, array $blacklists, GraphAware\Reco4PHP\Context\Context $context ) : GraphAware\Common\Result\ResultCollection
$input GraphAware\Common\Type\Node
$engines array
$blacklists array
$context GraphAware\Reco4PHP\Context\Context
Результат GraphAware\Common\Result\ResultCollection
    public function processDiscovery(Node $input, array $engines, array $blacklists, Context $context)
    {
        $stack = $this->databaseService->getDriver()->stack();
        foreach ($engines as $engine) {
            $statement = $engine->discoveryQuery($input, $context);
            $stack->push($statement->text(), $statement->parameters(), $engine->name());
        }
        foreach ($blacklists as $blacklist) {
            $statement = $blacklist->blacklistQuery($input);
            $stack->push($statement->text(), $statement->parameters(), $blacklist->name());
        }
        try {
            $resultCollection = $this->databaseService->getDriver()->runStack($stack);
            return $resultCollection;
        } catch (\Exception $e) {
            throw new \RuntimeException($e->getMessage());
        }
    }

Usage Example

 private function doDiscovery(Node $input, RecommendationEngine $engine, Context $context)
 {
     $recommendations = new Recommendations($context);
     $context->getStatistics()->startDiscovery();
     $result = $this->discoveryExecutor->processDiscovery($input, $engine->getDiscoveryEngines(), $engine->getBlacklistBuilders(), $context);
     foreach ($engine->getDiscoveryEngines() as $discoveryEngine) {
         $recommendations->merge($discoveryEngine->produceRecommendations($input, $result, $context));
     }
     $context->getStatistics()->stopDiscovery();
     $blacklist = $this->buildBlacklistedNodes($result, $engine);
     $this->removeIrrelevant($input, $engine, $recommendations, $blacklist);
     return $recommendations;
 }
DiscoveryPhaseExecutor