diff --git a/src/main/java/de/ids_mannheim/korap/KrillIndex.java b/src/main/java/de/ids_mannheim/korap/KrillIndex.java
index 4a82670..ffc2b5a 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillIndex.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillIndex.java
@@ -1359,7 +1359,7 @@
 
                 final PositionsToOffset pto = new PositionsToOffset(atomic,
                         field);
-
+				
                 // Spans spans = NearSpansOrdered();
                 final Spans spans = query.getSpans(atomic, (Bits) bitset,
                         termContexts);
diff --git a/src/main/java/de/ids_mannheim/korap/query/SpanClassQuery.java b/src/main/java/de/ids_mannheim/korap/query/SpanClassQuery.java
index 946d75d..3c25751 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SpanClassQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SpanClassQuery.java
@@ -9,6 +9,7 @@
 import org.apache.lucene.index.TermContext;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.spans.SpanQuery;
+import org.apache.lucene.search.spans.SpanTermQuery;
 import org.apache.lucene.search.spans.Spans;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.ToStringUtils;
@@ -58,6 +59,16 @@
 
         if (query != this.firstClause) {
 
+			// Rewritten spanquery is empty
+			if (query.getField() == null) {
+
+				// Return an artificially created null-query
+				// I guess there's a better way, but who knows
+				return new SpanTermQuery(
+					new Term(this.firstClause.getField(), "")
+					);
+			};
+
 			SpanClassQuery clone = this.clone();
             clone.firstClause = query;
 			return clone;
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestSampleIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestSampleIndex.java
index 5c60938..bbbb955 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestSampleIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestSampleIndex.java
@@ -13,6 +13,7 @@
 import org.apache.lucene.search.WildcardQuery;
 import org.apache.lucene.search.spans.SpanMultiTermQueryWrapper;
 import org.apache.lucene.search.spans.SpanQuery;
+import org.apache.lucene.search.spans.SpanOrQuery;
 import org.apache.lucene.search.spans.SpanTermQuery;
 import org.apache.lucene.store.MMapDirectory;
 import org.junit.BeforeClass;
@@ -267,6 +268,11 @@
         //spans(spanOr([tokens:s:meinem, tokens:s:meinen, tokens:s:meiner, tokens:s:meines]))@0:36-37
     }
 
+	@Test
+	public void testEmptySpanOrQuery () {
+		SpanQuery sq = new SpanOrQuery();
+	};
+
 
     @Test
     public void testWildcardPlusWithCollection () throws IOException {
@@ -284,15 +290,16 @@
         
         // mein+ /+w1:2,s0 &Erfahrung
         SpanMultiTermQueryWrapper<WildcardQuery> mtq = new SpanMultiTermQueryWrapper<WildcardQuery>(
-                new WildcardQuery(new Term("tokens", "s:mein+")));
-        SpanMultipleDistanceQuery mdsq = new SpanMultipleDistanceQuery(
-                new SpanClassQuery(mtq, (byte) 129),
-                new SpanClassQuery(sq, (byte) 129), constraints, true, true);
+			new WildcardQuery(new Term("tokens", "s:mein+")));
+
+		SpanMultipleDistanceQuery mdsq = new SpanMultipleDistanceQuery(
+			new SpanClassQuery(mtq, (byte) 129),
+			new SpanClassQuery(sq, (byte) 129), constraints, true, true);
 
         krillAvailabilityAll.setSpanQuery(mdsq);
         kr = sample.search(krillAvailabilityAll);
-        assertEquals(4, kr.getMatches().size());
-        
-        //spanOr([])
+
+		// As described in http://korap.github.io/Koral/, '+' is not a valid wildcard
+		assertEquals(0, kr.getMatches().size());
     }
 }
