--- 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,