diff --git a/service.inc b/service.inc
index f471cdc..a6b4283 100644
--- a/service.inc
+++ b/service.inc
@@ -857,7 +857,6 @@ class SearchApiDbService extends SearchApiAbstractService {
       );
     }
 
-    $or = db_or();
     $neg = !empty($keys['#negation']);
     $conj = $keys['#conjunction'];
     $words = array();
@@ -892,9 +891,6 @@ class SearchApiDbService extends SearchApiAbstractService {
     if ($words) {
       if (count($words) > 1) {
         $mul_words = TRUE;
-        foreach ($words as $word) {
-          $or->condition('word', $word);
-        }
       }
       else {
         $word = array_shift($words);
@@ -909,9 +905,13 @@ class SearchApiDbService extends SearchApiAbstractService {
           $query->fields('t', array('item_id', 'score'));
         }
         else {
-          $query->fields('t');
+          $query->fields('t', array('item_id', 'score', 'word'));
         }
         if ($mul_words) {
+          $or = db_or();
+          foreach ($words as $word) {
+            $or->condition('word', $word);
+          }
           $query->condition($or);
         }
         else {
@@ -1128,6 +1128,9 @@ class SearchApiDbService extends SearchApiAbstractService {
       return array();
     }
     $args = $db_query->getArguments();
+    if (!$db_query->getGroupBy()) {
+      $db_query->groupBy('t.item_id');
+    }
     $table = db_query_temporary((string) $db_query, $args, $this->query_options);
 
     $fields = $this->options['indexes'][$query->getIndex()->machine_name];
