3 // web interface to search
4 require 'www-header.php';
6 if (!isset($_GET['q'])) {
12 if (isset($_GET['page'])) {
13 if (!is_numeric($_GET['page'])) {
14 throw new Exception_Input('List page is not numeric');
16 //PEAR Pager begins at 1
17 $page = (int)$_GET['page'] - 1;
19 $perPage = 10;//$GLOBALS['phinde']['perPage'];
22 if (isset($_GET['filter'])) {
23 $allowedFilter = array('domain', 'language', 'tags', 'term');
24 foreach ($_GET['filter'] as $type => $value) {
25 if (in_array($type, $allowedFilter)) {
26 $filters[$type] = filter_var($value, FILTER_SANITIZE_STRING);
31 $es = new Elasticsearch($GLOBALS['phinde']['elasticsearch']);
32 $res = $es->search($query, $filters, $page, $perPage);
34 $pager = new Html_Pager(
35 $res->hits->total, $perPage, $page + 1,
39 foreach ($res->hits->hits as &$hit) {
41 if ($doc->title == '') {
42 $doc->title = '(no title)';
44 $doc->extra = new \stdClass();
45 $doc->extra->cleanUrl = preg_replace('#^.*://#', '', $doc->url);
46 if (isset($doc->modate)) {
47 $doc->extra->day = substr($doc->modate, 0, 10);
51 $baseLink = '?q=' . urlencode($query);
52 foreach ($res->aggregations as $key => &$aggregation) {
53 foreach ($aggregation->buckets as &$bucket) {
54 $bucket->url = $baseLink
55 . '&filter[' . urlencode($key) . ']=' . urlencode($bucket->key);
58 //var_dump($res->aggregations);
64 'hitcount' => $res->hits->total,
65 'hits' => $res->hits->hits,
66 'aggregations' => $res->aggregations,