public function remove(Recommendation $recommendation) { if (!array_key_exists($recommendation->item()->identity(), $this->recommendations)) { return; } unset($this->recommendations[$recommendation->item()->identity()]); }
public function prepareQuery(NodeInterface $input, Recommendation $recommendation, CypherAwarePostProcessor $postProcessor) { $query = 'MATCH (input), (reco) WHERE id(input) = {idInput} AND id(reco) = {idReco}' . PHP_EOL; $query .= $postProcessor->query(); $parameters = ['idInput' => $input->identity(), 'idReco' => $recommendation->item()->identity()]; $tag = sprintf('post_process_%s_%d', $postProcessor->name(), $recommendation->item()->identity()); $this->stack->push($query, $parameters, $tag); }
public final function buildQuery(NodeInterface $input, Recommendation $recommendation) { $relationshipPatterns = [Direction::BOTH => array('-[:%s]-', '-[:%s]-'), Direction::INCOMING => array('<-[:%s]-', '-[:%s]->'), Direction::OUTGOING => array('-[:%s]->', '<-[:%s]-')]; $relPattern = sprintf($relationshipPatterns[$this->relationshipDirection()][0], $this->relationshipType()); $inversedRelPattern = sprintf($relationshipPatterns[$this->relationshipDirection()][1], $this->relationshipType()); $query = 'MATCH (input) WHERE id(input) = {inputId}, (item) WHERE id(item) = {itemId} MATCH (input)' . $relPattern . '(shared)' . $inversedRelPattern . '(item) RETURN shared as sharedThing'; return Statement::create($query, ['inputId' => $input->identity(), 'itemId' => $recommendation->item()->identity()]); }
public function buildQuery(NodeInterface $input, Recommendation $recommendation) { $query = 'MATCH (item) WHERE id(item) = {itemId} RETURN size((item)<-[:RATED]-()) as ratings'; return Statement::create($query, ['itemId' => $recommendation->item()->identity()]); }