33 * |
33 * |
34 * @return \Illuminate\Http\Response |
34 * @return \Illuminate\Http\Response |
35 */ |
35 */ |
36 public function index(Request $request) |
36 public function index(Request $request) |
37 { |
37 { |
|
38 $filter = $request->input('filter', 'bnf'); |
38 $index = $request->input('index', 0); |
39 $index = $request->input('index', 0); |
39 $limit = $request->input('limit', 0); |
40 $limit = $request->input('limit', config('corpusparole.theme_default_limit')); |
40 $sort = $request->input('sort', 'count'); |
41 $sort = $request->input('sort', 'count'); |
41 |
42 |
|
43 if($filter === 'bnf') { |
|
44 $include = ".*\|bnf\|.*"; |
|
45 } |
|
46 elseif($filter === 'lexvo') { |
|
47 $include = ".*\|lxv\|.*"; |
|
48 } |
|
49 elseif($filter === 'all') { |
|
50 $include = false; |
|
51 } |
|
52 else { |
|
53 abort(401,"Value for filter parameter must be in 'bnf', 'lexvo', 'all'"); |
|
54 } |
42 |
55 |
43 if($sort == "count" || $sort == "descending") { |
56 if($sort == "count" || $sort == "descending") { |
44 $order_field = "_count"; |
57 $order_field = "_count"; |
45 $order_dir = "desc"; |
58 $order_dir = "desc"; |
46 } elseif($sort == "-count") { |
59 } elseif($sort == "-count") { |
76 ] |
89 ] |
77 ] |
90 ] |
78 ] |
91 ] |
79 ]; |
92 ]; |
80 |
93 |
|
94 if($include) { |
|
95 $query['body']['aggs']['subjects']['aggs']['subjects']['terms']['include'] = $include; |
|
96 } |
|
97 |
81 $esRes = Es::search($query); |
98 $esRes = Es::search($query); |
82 |
99 |
83 $themes = []; |
100 $themes = []; |
84 |
101 |
85 $bucketList = array_slice($esRes['aggregations']['subjects']['subjects']['buckets'], $index*$limit, $limit); |
102 $bucketList = array_slice($esRes['aggregations']['subjects']['subjects']['buckets'], $index*$limit, $limit); |
86 |
103 |
87 foreach($bucketList as $bucket) { |
104 foreach($bucketList as $bucket) { |
88 $parts = explode("|", $bucket['key']); |
105 $parts = explode("|", $bucket['key']); |
89 $label = $parts[0]; |
106 $label = $parts[0]; |
90 $url = config('corpusparole.bnf_ark_base_url').$parts[1]; |
107 $url = ['bnf' => config('corpusparole.bnf_ark_base_url'), 'lxv' => config('corpusparole.lexvo_base_url')][$parts[1]].$parts[2]; |
91 $themes[$url] = [ |
108 $themes[$url] = [ |
92 "label" => $label, |
109 "label" => $label, |
93 "count" => $bucket['doc_count'] |
110 "count" => $bucket['doc_count'] |
94 ]; |
111 ]; |
95 } |
112 } |