wip
[phinde.git] / src / phinde / Elasticsearch.php
index 9babfee21324988fbde6ac0f88e7b763d570594b..8a6d8c784900b92e48d13dfc329f32a3d0b5ee5a 100644 (file)
@@ -58,6 +58,20 @@ class Elasticsearch
         $r->send();
     }
 
+    public function getIndexStatus()
+    {
+        $r = new Elasticsearch_Request(
+            $this->baseUrl . '_stats/docs,store',
+            \HTTP_Request2::METHOD_GET
+        );
+        $res = $r->send();
+        $data = json_decode($res->getBody());
+        return array(
+            'documents' => $data->_all->total->docs->count,
+            'size'      => $data->_all->total->store->size_in_bytes,
+        );
+    }
+
     public function search($query, $filters, $site, $page, $perPage, $sort)
     {
         if (preg_match_all('#nick:([^ ]*)#', $query, $matches)) {
@@ -78,7 +92,7 @@ class Elasticsearch
             $query      = trim(str_replace($matches[0], '', $query));
             $qMust[]    = array(
                 'range' => array(
-                    'modate' => array(
+                    'status.modate' => array(
                         'gt' => $dateAfter . '||/d',
                     )
                 )
@@ -89,7 +103,7 @@ class Elasticsearch
             $query      = trim(str_replace($matches[0], '', $query));
             $qMust[]    = array(
                 'range' => array(
-                    'modate' => array(
+                    'status.modate' => array(
                         'lt' => $dateBefore . '||/d',
                     )
                 )
@@ -100,7 +114,7 @@ class Elasticsearch
             $query      = trim(str_replace($matches[0], '', $query));
             $qMust[]    = array(
                 'range' => array(
-                    'modate' => array(
+                    'status.modate' => array(
                         'gte' => $dateExact . '||/d',
                         'lte' => $dateExact . '||/d',
                     )
@@ -121,6 +135,9 @@ class Elasticsearch
             )
         );
 
+        if ($sort == '' && $GLOBALS['phinde']['defaultSort'] == 'date') {
+            $sort = 'date';
+        }
         if ($sort == 'date') {
             $sortCfg = array('status.modate' => array('order' => 'desc'));
         } else {
@@ -150,6 +167,7 @@ class Elasticsearch
             ),
             'highlight' => array(
                 'pre_tags' => array('<em class="hl">'),
+                'post_tags' => array('</em>'),
                 'order' => 'score',
                 'encoder' => 'html',
                 'fields' => array(
@@ -214,8 +232,12 @@ class Elasticsearch
 
         //unset($doc['_source']);
 
-        //ini_set('xdebug.var_display_max_depth', 10);
-        //echo json_encode($doc);die();
+        if (false) {
+            ini_set('xdebug.var_display_max_depth', 10);
+            header('Content-type: application/json');
+            echo json_encode($doc, JSON_PRETTY_PRINT);die();
+        }
+
         $r->setBody(json_encode($doc));
         $res = $r->send();
         return json_decode($res->getBody());