public function populateIndex(BulkOperation $bulk, array $databoxes) { foreach ($databoxes as $databox) { /** @var databox $databox */ $databoxId = $databox->get_sbas_id(); $visitor = new TermVisitor(function ($term) use($bulk, $databoxId) { // Path and id are prefixed with a databox identifier to not // collide with other databoxes terms // Term structure $id = sprintf('%s_%s', $databoxId, $term['id']); unset($term['id']); $term['path'] = sprintf('/%s%s', $databoxId, $term['path']); $term['databox_id'] = $databoxId; // Index request $params = array(); $params['id'] = $id; $params['type'] = self::TYPE_NAME; $params['body'] = $term; $bulk->index($params, null); }); $document = Helper::thesaurusFromDatabox($databox); $this->navigator->walk($document, $visitor); } }
private function indexFromFetcher(BulkOperation $bulk, Fetcher $fetcher, array &$submited_records) { /** @var RecordInterface $record */ while ($record = $fetcher->fetch()) { $op_identifier = $this->getUniqueOperationId($record['id']); $params = array(); $params['id'] = $record['id']; unset($record['id']); $params['type'] = self::TYPE_NAME; $params['body'] = $record; $submited_records[$op_identifier] = $record; $bulk->index($params, $op_identifier); } }