server/src/app/Http/Controllers/Api/DiscourseController.php
changeset 377 52169c718513
parent 307 07b44a378ad8
child 378 5b47eab083f3
--- a/server/src/app/Http/Controllers/Api/DiscourseController.php	Thu Oct 20 15:09:31 2016 +0200
+++ b/server/src/app/Http/Controllers/Api/DiscourseController.php	Thu Oct 20 17:27:36 2016 +0200
@@ -2,25 +2,14 @@
 
 namespace CorpusParole\Http\Controllers\Api;
 
-// use CorpusParole\Http\Requests;
 use CorpusParole\Http\Controllers\Controller;
 
 use Illuminate\Http\Request;
-use EasyRdf\Resource;
-use EasyRdf\Literal;
 
-use CorpusParole\Libraries\Sparql\SparqlClient;
-use CorpusParole\Services\LexvoResolverInterface;
-use CorpusParole\Services\BnfResolverInterface;
-
+use Es;
 
 class DiscourseController extends Controller
 {
-    private $sparqlClient = null;
-
-    public function __construct(SparqlClient $sparqlClient) {
-        $this->sparqlClient = $sparqlClient;
-    }
 
     /**
      * Display the specified resource.
@@ -30,21 +19,28 @@
     public function index(Request $request)
     {
 
-        $query =  preg_replace('/\s+/', ' ', "SELECT (?o AS ?res) (COUNT(?s) AS ?count) WHERE {
-            ?s a <http://www.europeana.eu/schemas/edm/ProvidedCHO>.
-            ?s <http://purl.org/dc/elements/1.1/type> ?o.
-            FILTER(uri(?o) in (<".implode('>,<', array_keys(config('corpusparole.corpus_discourse_type'))).">))
-        }
-        GROUP BY ?o
-        ORDER BY DESC(?count)");
+        $query = [ "match_all" => []];
 
-        $docs = $this->sparqlClient->query($query);
+        $esQuery = [
+            'index' => env('ELASTICSEARCH_INDEX'),
+            'body' => [
+                "size" => 0,
+                "query" => $query,
+                "aggs" => [
+                    "discourses" => [
+                        "terms" => [ "field" => "discourse_types", "order" => [ "_count" => "desc" ], "size" => 0 ]
+                    ]
+                ]
+            ]
+        ];
+
+        $esRes = Es::search($esQuery);
 
         $discourses = [];
 
-        foreach ($docs as $row) {
-            $key = $row->res->getUri();
-            $count = $row->count->getValue();
+        foreach ($esRes['aggregations']['discourses']['buckets'] as $b) {
+            $key = $b['key'];
+            $count = $b['doc_count'];
             $label = config('corpusparole.corpus_discourse_type')[$key];
             $discourses[$key] = [
                 "label" => $label,