server/src/app/Http/Controllers/Api/ThemeController.php
changeset 378 5b47eab083f3
parent 377 52169c718513
child 406 cf0f23803a53
equal deleted inserted replaced
377:52169c718513 378:5b47eab083f3
     1 <?php
     1 <?php
     2 
     2 
     3 namespace CorpusParole\Http\Controllers\Api;
     3 namespace CorpusParole\Http\Controllers\Api;
     4 
     4 
     5 // use Illuminate\Http\Request;
       
     6 // use CorpusParole\Http\Requests;
       
     7 use CorpusParole\Http\Controllers\Controller;
     5 use CorpusParole\Http\Controllers\Controller;
     8 
     6 
     9 use Illuminate\Http\Request;
     7 use Illuminate\Http\Request;
    10 use EasyRdf\Resource;
     8 use EasyRdf\Resource;
    11 use EasyRdf\Literal;
     9 use EasyRdf\Literal;
    13 use Es;
    11 use Es;
    14 use Log;
    12 use Log;
    15 
    13 
    16 use CorpusParole\Services\LexvoResolverInterface;
    14 use CorpusParole\Services\LexvoResolverInterface;
    17 use CorpusParole\Services\BnfResolverInterface;
    15 use CorpusParole\Services\BnfResolverInterface;
       
    16 use CorpusParole\Libraries\Filters\CorpusFilterManager;
    18 
    17 
    19 
    18 
    20 class ThemeController extends Controller
    19 class ThemeController extends Controller
    21 {
    20 {
    22     public function __construct(LexvoResolverInterface $lexvoResolver, BnfResolverInterface $bnfResolver) {
    21     public function __construct(LexvoResolverInterface $lexvoResolver, BnfResolverInterface $bnfResolver) {
    70         } else {
    69         } else {
    71             $order_field = "_count";
    70             $order_field = "_count";
    72             $order_dir = "desc";
    71             $order_dir = "desc";
    73         }
    72         }
    74 
    73 
    75         $query = [
    74         $filterManager = new CorpusFilterManager();
       
    75         $filters = $filterManager->prepareFilters($request);
       
    76         unset($filters['themes']);
       
    77         $qFilterParts = $filterManager->buildESFilters($filters);
       
    78         $query = $filterManager->buildQuery($qFilterParts);
       
    79 
       
    80 
       
    81         $esQuery = [
    76             'index' => env('ELASTICSEARCH_INDEX'),
    82             'index' => env('ELASTICSEARCH_INDEX'),
    77             'body' => [
    83             'body' => [
    78                 'size' => 0,
    84                 'size' => 0,
       
    85                 'query' => $query,
    79                 'aggs' => [
    86                 'aggs' => [
    80                     "subjects" => [
    87                     "subjects" => [
    81                         "nested" => [ "path" => "subject" ],
    88                         "nested" => [ "path" => "subject" ],
    82                         "aggs" => [
    89                         "aggs" => [
    83                             "subjects" => [
    90                             "subjects" => [
    92                 ]
    99                 ]
    93             ]
   100             ]
    94         ];
   101         ];
    95 
   102 
    96         if($include) {
   103         if($include) {
    97             $query['body']['aggs']['subjects']['aggs']['subjects']['terms']['include'] = $include;
   104             $esQuery['body']['aggs']['subjects']['aggs']['subjects']['terms']['include'] = $include;
    98         }
   105         }
    99 
   106 
   100         $esRes = Es::search($query);
   107         $esRes = Es::search($esQuery);
   101 
   108 
   102         $themes = [];
   109         $themes = [];
   103 
   110 
   104         $bucketList = $esRes['aggregations']['subjects']['subjects']['buckets'];
   111         $bucketList = $esRes['aggregations']['subjects']['subjects']['buckets'];
   105         if($limit > 0) {
   112         if($limit > 0) {