server/src/app/Http/Controllers/Api/LanguageController.php
changeset 377 52169c718513
parent 126 e87a340711a4
child 378 5b47eab083f3
--- a/server/src/app/Http/Controllers/Api/LanguageController.php	Thu Oct 20 15:09:31 2016 +0200
+++ b/server/src/app/Http/Controllers/Api/LanguageController.php	Thu Oct 20 17:27:36 2016 +0200
@@ -2,41 +2,42 @@
 
 namespace CorpusParole\Http\Controllers\Api;
 
-// use Illuminate\Http\Request;
-// use CorpusParole\Http\Requests;
+use Illuminate\Http\Request;
 use CorpusParole\Http\Controllers\Controller;
 
-use CorpusParole\Libraries\Sparql\SparqlClient;
-
+use Es;
 
 class LanguageController extends Controller
 {
-    private $sparqlClient = null;
-
-    public function __construct(SparqlClient $sparqlClient) {
-        $this->sparqlClient = $sparqlClient;
-    }
-
     /**
      * Display the specified resource.
      *
      * @return \Illuminate\Http\Response
      */
-    public function index()
+    public function index(Request $request)
     {
 
-        $query = "select ?lang (count(?lang) as ?count) where {
-            ?s a <http://www.europeana.eu/schemas/edm/ProvidedCHO>.
-            ?s <http://purl.org/dc/elements/1.1/language> ?lang
-        }
-        GROUP BY ?lang
-        ORDER BY DESC(?count)";
+        $query = [ "match_all" => []];
 
-        $docs = $this->sparqlClient->query($query);
+        $esQuery = [
+            'index' => env('ELASTICSEARCH_INDEX'),
+            'body' => [
+                "size" => 0,
+                "query" => $query,
+                "aggs" => [
+                    "languages" => [
+                        "terms" => [ "field" => "language", "order" => [ "_count" => "desc" ], "size" => 0 ]
+                    ]
+                ]
+            ]
+        ];
+
+        $esRes = Es::search($esQuery);
 
         $languages = [];
-        foreach ($docs as $row) {
-            $languages[$row->lang->getUri()] = $row->count->getValue();
+
+        foreach ($esRes['aggregations']['languages']['buckets'] as $b) {
+            $languages[$b['key']] = $b['doc_count'];
         }
 
         return response()->json(['languages' => $languages ]);