コード例 #1
0
 public function doc2object($doc)
 {
     $dataset = $doc['fields']['dataset'][0];
     $id = $doc['fields']['id'][0];
     if ($dataset == null or $id == null) {
         throw new InternalErrorException("Empty dataset or id: " . $dataset . ' ' . $id);
     }
     $output = array('id' => $id, 'dataset' => $dataset, 'url' => Dataobject::apiUrl($dataset, $id), 'mp_url' => Dataobject::mpUrl($dataset, $id), 'schema_url' => Dataobject::schemaUrl($dataset), 'global_id' => $doc['_id'], 'slug' => $doc['fields']['slug'][0], 'score' => $doc['_score'], 'data' => $doc['fields']['source'][0]['data']);
     if (@$doc['inner_hits']['collection']['hits']['total'] && @$doc['inner_hits']['collection']['hits']['hits'][0]['_source']) {
         $output['collection'] = $doc['inner_hits']['collection']['hits']['hits'][0]['_source'];
         $output['collection']['id'] = (int) $doc['inner_hits']['collection']['hits']['hits'][0]['_id'];
     }
     if (isset($doc['fields']['source'][0]['static']) && !empty($doc['fields']['source'][0]['static'])) {
         $output['static'] = $doc['fields']['source'][0]['static'];
     }
     if (isset($doc['fields']['source'][0]['contexts']) && !empty($doc['fields']['source'][0]['contexts'])) {
         $force_context = false;
         if (@$doc['inner_hits']['alert-data']['hits']['total'] && isset($doc['inner_hits']['alert-data']['hits']['hits'][0]['fields']['context'][0])) {
             $force_context = $doc['inner_hits']['alert-data']['hits']['hits'][0]['fields']['context'][0];
         }
         $context = array();
         foreach ($doc['fields']['source'][0]['contexts'] as $key => $value) {
             if (!$force_context || $force_context && strpos($key, $force_context) !== false) {
                 $key_parts = explode('.', $key);
                 $value_parts = explode("\n\r", $value);
                 $context[] = array('creator' => array('dataset' => $key_parts[0], 'id' => $key_parts[1], 'global_id' => $value_parts[0], 'name' => $value_parts[1], 'slug' => $value_parts[2], 'url' => @$value_parts[5]), 'action' => $key_parts[2], 'label' => $value_parts[3], 'sentence' => $value_parts[4]);
             }
         }
         $output['contexts'] = $context;
     }
     if (isset($doc['highlight']['text']) && is_array($doc['highlight']['text']) && isset($doc['highlight']['text'][0])) {
         $output['highlight'] = array($doc['highlight']['text']);
     }
     if (isset($doc['inner_hits']) && isset($doc['inner_hits']['inner']) && isset($doc['inner_hits']['inner']['hits']) && isset($doc['inner_hits']['inner']['hits']['hits'])) {
         foreach ($doc['inner_hits']['inner']['hits']['hits'] as $hit) {
             $output['inner_hits'][] = array('id' => $hit['_id'], 'title' => @$hit['fields']['title'][0]);
         }
     }
     return $output;
 }