/** * index this node, and add it to the current bulk request. * * @param NodeInterface $node * @param string $targetWorkspaceName * @param boolean $indexVariants * @return void */ public function indexNode(NodeInterface $node, $targetWorkspaceName = NULL, $indexVariants = TRUE) { if ($indexVariants === TRUE) { $this->indexAllNodeVariants($node); return; } $identifier = $this->generateUniqueNodeIdentifier($node); if ($node->isRemoved()) { $this->indexClient->removeData($identifier); return; } $fulltextData = array(); if (isset($this->indexedNodeData[$identifier])) { $properties = $this->indexClient->findOneByIdentifier($identifier); $properties['__workspace'] = $properties['__workspace'] . ', #' . ($targetWorkspaceName !== NULL ? $targetWorkspaceName : $node->getContext()->getWorkspaceName()) . '#'; $properties['__dimensionshash'] = $properties['__dimensionshash'] . ', #' . md5(json_encode($node->getContext()->getDimensions())) . '#'; $this->indexClient->insertOrUpdatePropertiesToIndex($properties, $identifier); } else { $nodePropertiesToBeStoredInIndex = $this->extractPropertiesAndFulltext($node, $fulltextData); if (count($fulltextData) !== 0) { $this->addFulltextToRoot($node, $fulltextData); } $this->indexClient->indexData($identifier, $nodePropertiesToBeStoredInIndex, $fulltextData); $this->indexedNodeData[$identifier] = $identifier; } }