diff --git a/includes/service.inc b/includes/service.inc
index b153a80..6650ad2 100644
--- a/includes/service.inc
+++ b/includes/service.inc
@@ -1470,6 +1470,17 @@ class SearchApiSolrService extends SearchApiAbstractService {
    */
   protected function createFilterQuery($field, $value, $operator, $field_info) {
     $field = call_user_func(array($this->connection_class, 'escapeFieldName'), $field);
+    // Special handling for location fields.
+    if (isset($field_info['real_type']) && $field_info['real_type'] == 'location') {
+      // Empty / non-empty comparison has to take place in one of the subfields
+      // of the location field type. These subfields are usually generated with
+      // the index and the field type as name suffix.
+      // @TODO Does this work for solr3?
+      // @TODO Do we need to handle other operators / values too?
+      if ($value === NULL) {
+        $field .= '_0___tdouble';
+      }
+    }
     if ($value === NULL) {
       return ($operator == '=' ? '*:* AND -' : '') . "$field:[* TO *]";
     }
