diff --git a/include/ajax.tickets.php b/include/ajax.tickets.php
index 5834b2377744ebbba350aa6a50947e1e56c7d4af..45eb78ecee1e21d4c5a88d55c7641727185a59dd 100644
--- a/include/ajax.tickets.php
+++ b/include/ajax.tickets.php
@@ -101,6 +101,8 @@ class TicketsAjaxAPI extends AjaxController {
         global $thisstaff, $cfg, $ost;
 
         $result=array();
+        $criteria = array();
+
         $select = 'SELECT ticket.ticket_id';
         $from = ' FROM '.TICKET_TABLE.' ticket
                   LEFT JOIN '.TICKET_STATUS_TABLE.' status
@@ -119,29 +121,38 @@ class TicketsAjaxAPI extends AjaxController {
         $where.=' ) ';
 
         //Department
-        if($req['deptId'])
+        if ($req['deptId']) {
             $where.=' AND ticket.dept_id='.db_input($req['deptId']);
+            $criteria['dept_id'] = $req['deptId'];
+        }
 
         //Help topic
-        if($req['topicId'])
+        if($req['topicId']) {
             $where.=' AND ticket.topic_id='.db_input($req['topicId']);
+            $criteria['topic_id'] = $req['topicId'];
+        }
 
         //Status
         switch(strtolower($req['status'])) {
             case 'open':
                 $where.=' AND status.state="open" ';
+                $criteria['status'] = 'open';
                 break;
             case 'answered':
                 $where.=' AND status.state="open" AND ticket.isanswered=1 ';
+                $criteria += array('status' => 'open', 'isanswered'=>1);
                 break;
             case 'overdue':
                 $where.=' AND status.state="open" AND ticket.isoverdue=1 ';
+                $criteria += array('status' => 'open', 'isoverdue'=>1);
                 break;
             case 'resolved':
                 $where.=' AND status.state="resolved" ';
+                $criteria += array('status' => 'resolved', 'isoverdue'=>1);
                 break;
             case 'closed':
                 $where.=' AND status.state="closed" ';
+                $criteria['status'] = 'closed';
                 break;
         }
 
@@ -150,10 +161,14 @@ class TicketsAjaxAPI extends AjaxController {
             $id=preg_replace("/[^0-9]/", "", $req['assignee']);
             $assignee = $req['assignee'];
             $where.= ' AND ( ( status.state="open" ';
-            if($assignee[0]=='t')
+            if($assignee[0]=='t') {
                 $where.=' AND ticket.team_id='.db_input($id);
-            elseif($assignee[0]=='s')
+                $criteria['team_id'] = $id;
+            }
+            elseif($assignee[0]=='s') {
                 $where.=' AND ticket.staff_id='.db_input($id);
+                $criteria['staff_id'] = $id;
+            }
             elseif(is_numeric($id))
                 $where.=' AND ticket.staff_id='.db_input($id);
 
@@ -177,28 +192,22 @@ class TicketsAjaxAPI extends AjaxController {
         if( ($startTime && $startTime>time()) or ($startTime>$endTime && $endTime>0))
             $startTime=$endTime=0;
 
-        if($startTime)
+        if($startTime) {
             $where.=' AND ticket.created>=FROM_UNIXTIME('.$startTime.')';
+            $criteria['created__gte'] = $startTime;
+        }
 
-        if($endTime)
+        if($endTime) {
             $where.=' AND ticket.created<=FROM_UNIXTIME('.$endTime.')';
+            $criteria['created__lte'] = $startTime;
+        }
 
         //Query
         $joins = array();
         if($req['query']) {
-            $queryterm=db_real_escape($req['query'], false);
-
             // Setup sets of joins and queries
             if ($s = $ost->searcher)
-               $ids = $s->find($req['query'], null, 'Ticket');
-
-            if (!$ids)
-                return array();
-
-            $joins[] = array(
-                'from' => '',
-                'where' => 'ticket.ticket_id IN (' . implode(',', $ids) . ')'
-            );
+               return $s->find($req['query'], $criteria, 'Ticket');
         }
 
         // Dynamic fields
diff --git a/include/class.search.php b/include/class.search.php
index 7d06abb4e3593534241b9f4d6b33b4f28cf98860..6c410dad17bee4a641d2940be0b1d4fa1bdbd8a8 100644
--- a/include/class.search.php
+++ b/include/class.search.php
@@ -291,8 +291,16 @@ class MysqlSearchBackend extends SearchBackend {
                     case 'staff_id':
                     case 'dept_id':
                     case 'user_id':
+                    case 'isanswered':
+                    case 'isoverdue':
                         $where[] = sprintf('A1.%s = %s', $name, db_input($value));
                         break;
+                    case 'created__gte':
+                        $where[] = sprintf('A1.created >= %s', db_input($value));
+                        break;
+                    case 'created__lte':
+                        $where[] = sprintf('A1.created <= %s', db_input($value));
+                        break;
                     case 'email':
                     case 'org_id':
                     case 'form_id':
@@ -357,8 +365,6 @@ class MysqlSearchBackend extends SearchBackend {
      * not index in the _search table and add it to the index.
      */
     function IndexOldStuff() {
-        print 'Indexing old stuff!';
-
         $class = get_class();
         $auto_create = function($db_error) use ($class) {