diff --git a/includes/service.inc b/includes/service.inc
index a366aa3..cad2a26 100644
--- a/includes/service.inc
+++ b/includes/service.inc
@@ -638,7 +638,7 @@ class FuzzySearchService extends SearchApiAbstractService {
         $db_query->addField('t', 'item_id', 'item_id');
         $db_query->addExpression(':score', 'score', array(':score' => 1));
       }
-      $condition = $this->createFilterCondition($filter, $fields, $db_query);
+      $condition = $this->createFilterCondition($filter, $fields, $db_query, $fuzzy);
       if ($condition) {
         $db_query->condition($condition);
       }
@@ -699,17 +699,11 @@ class FuzzySearchService extends SearchApiAbstractService {
         }
       }
       else {
-        if ($fuzzy['sort_score']) {
-          $db_query->orderBy('score', 'DESC');
-          $db_query->orderBy('percent', 'DESC');
-        }
-        // This is the default sort, by percent completeness.
-        else {
-          $db_query->orderBy('percent', 'DESC');
-          $db_query->orderBy('score', 'DESC');
-        }
+        $db_query->orderBy('score', 'DESC');
       }
+
       $result = $db_query->execute();
+
       $time_queries_done = microtime(TRUE);
 
       foreach ($result as $row) {
@@ -854,7 +848,6 @@ class FuzzySearchService extends SearchApiAbstractService {
     }
 
     $or = db_or();
-    $and = db_and();
     $neg = !empty($keys['#negation']);
     $conj = $keys['#conjunction'];
     $words = array();
@@ -918,13 +911,14 @@ class FuzzySearchService extends SearchApiAbstractService {
           $query->condition($or);
         }
         else {
-          $ngrams = fuzzysearch_parse_word($word, $fuzzy['nlength']);
+          $ngrams = fuzzysearch_parse_word($word, $fuzzy);
           foreach ($ngrams['ngrams'] as $ngram) {
             $and = db_and();
             $and->condition('ngram', $ngram)->condition('completeness', $ngrams['comp_min'], '>=')->condition('completeness', $ngrams['comp_max'], '<=');
             $or->condition($and);
           }
-          $query->condition($or);
+		  if(count($ngrams['ngrams']))
+	          $query->condition($or);
         }
         if (!isset($db_query)) {
           $db_query = $query;
@@ -940,7 +934,8 @@ class FuzzySearchService extends SearchApiAbstractService {
         // Group by word and then entity
         $query->groupBy('t.word_id');
         $query->groupBY('t.item_id');
-        $query->addExpression('SUM(t.completeness)', 'percent');
+		if(!$neg)
+			$query->addExpression('SUM(t.completeness)', 'percent');
         $query->having('SUM(t.completeness) >= :value1', array(':value1' => $fuzzy['min_completeness']));
       }
     }
@@ -948,7 +943,7 @@ class FuzzySearchService extends SearchApiAbstractService {
     if ($nested) {
       $word = '';
       foreach ($nested as $k) {
-        $query = $this->createKeysQuery($k, $fields, $all_fields);
+        $query = $this->createKeysQuery($k, $fields, $all_fields, $fuzzy);
         if (!$neg) {
           $word .= ' ';
           $var = ':word' . strlen($word);
@@ -1020,13 +1015,13 @@ class FuzzySearchService extends SearchApiAbstractService {
 
       if ($conj == 'AND') {
         foreach ($negated as $k) {
-          $db_query->condition('t.item_id', $this->createKeysQuery($k, $fields, $all_fields), 'NOT IN');
+          $db_query->condition('t.item_id', $this->createKeysQuery($k, $fields, $all_fields, $fuzzy), 'NOT IN');
         }
       }
       else {
         $or = db_or();
         foreach ($negated as $k) {
-          $or->condition('t.item_id', $this->createKeysQuery($k, $fields, $all_fields), 'NOT IN');
+          $or->condition('t.item_id', $this->createKeysQuery($k, $fields, $all_fields, $fuzzy), 'NOT IN');
         }
         if (isset($old_query)) {
           $or->condition('t.item_id', $old_query, 'NOT IN');
@@ -1062,12 +1057,12 @@ class FuzzySearchService extends SearchApiAbstractService {
    *
    * @return QueryConditionInterface
    */
-  protected function createFilterCondition(SearchApiQueryFilterInterface $filter, array $fields, SelectQueryInterface $db_query) {
+  protected function createFilterCondition(SearchApiQueryFilterInterface $filter, array $fields, SelectQueryInterface $db_query, array $fuzzy) {
     $cond = db_condition($filter->getConjunction());
     $empty = TRUE;
     foreach ($filter->getFilters() as $f) {
       if (is_object($f)) {
-        $c = $this->createFilterCondition($f, $fields, $db_query);
+        $c = $this->createFilterCondition($f, $fields, $db_query, $fuzzy);
         if ($c) {
           $empty = FALSE;
           $cond->condition($c);
@@ -1088,7 +1083,7 @@ class FuzzySearchService extends SearchApiAbstractService {
           // #negation is set here purely because we don't want any score.
           $keys = array('#conjunction' => 'AND', '#negation' => TRUE, $f[1]);
           $keys = $this->prepareKeys($keys);
-          $query = $this->createKeysQuery($keys, array($fields[$f[0]]), $fields);
+          $query = $this->createKeysQuery($keys, array($fields[$f[0]]), $fields, $fuzzy);
           $cond->condition('t.item_id', $query, $f[2] == '<>' || $f[2] == '!=' ? 'NOT IN' : 'IN');
         }
         else {
