diff --git a/Changes b/Changes
index d5fc72b..31298c5 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,7 @@
-0.64.0 2025-03-28
+0.64.0 2025-04-30
     - [feature] Support signed matchids to prevent consecutive
       positional requests (diewald)
+    - [feature] Add support for krill.index.textSize.max (kupietz)
 
 0.63.3 2024-12-15
     - [performance] Improve short circuit on count=0 and
diff --git a/src/main/java/de/ids_mannheim/korap/response/Match.java b/src/main/java/de/ids_mannheim/korap/response/Match.java
index 0c18d7c..d1e95f5 100644
--- a/src/main/java/de/ids_mannheim/korap/response/Match.java
+++ b/src/main/java/de/ids_mannheim/korap/response/Match.java
@@ -208,6 +208,9 @@
     public Match (int maxTokenMatchSize, String idString, boolean includeHighlights) {
         MatchIdentifier id = new MatchIdentifier(idString);
 
+        if (id.getTextSigle() == "" && id.getDocID() == "")
+            return;
+        
         if (id.getStartPos() > -1) {
 			this.mirrorIdentifier = id.toString();
 
diff --git a/src/main/java/de/ids_mannheim/korap/response/match/MatchIdentifier.java b/src/main/java/de/ids_mannheim/korap/response/match/MatchIdentifier.java
index e94f13a..104aefb 100644
--- a/src/main/java/de/ids_mannheim/korap/response/match/MatchIdentifier.java
+++ b/src/main/java/de/ids_mannheim/korap/response/match/MatchIdentifier.java
@@ -105,6 +105,7 @@
                 // No signature returned
                 if (hmacStr == null) {
                     this.textSigle = "";
+                    this.docID = "";
                     return;
                 };
 
@@ -115,6 +116,7 @@
                 
                 if (!MessageDigest.isEqual(hmacBytes, hmacVerify)) {
                     this.textSigle = "";
+                    this.docID = "";
                     return;
                 };
             };
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java b/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
index 57d8177..d7a9009 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
@@ -387,6 +387,37 @@
                 km.getSnippetHTML());
     };
 
+    @Test
+    public void indexExampleSign () throws IOException, QueryException {
+
+        MatchIdentifier.initMac("tree");
+
+        
+        KrillIndex ki = new KrillIndex();
+        ki.addDoc(createSimpleFieldDoc());
+        ki.commit();
+
+        Match km = ki.getMatchInfo("match-c1!d1-p7-9(4)8-8(2)7-8", "tokens",
+                                   null, null, false, false);
+
+        JsonNode res = mapper.readTree(km.toJsonString());
+        assertEquals("Invalid match identifier", res.at("/errors/0/1").asText());
+        assertEquals("", res.at("/matchID").asText());
+        assertEquals("", res.at("/fields/0/key").asText());
+
+
+        km = ki.getMatchInfo("match-c1!d1-p7-9(2)7-8(1)8-8x_07WRwmjA5EigwG8wYcURhnz_WkL9cepvU96hC2mp6SE", "tokens",
+                                   null, null, false, false);
+
+        res = mapper.readTree(km.toJsonString());
+        assertEquals("", res.at("/errors/0/1").asText());
+        assertEquals("match-c1!d1-p7-9(2)7-8(1)8-8x_07WRwmjA5EigwG8wYcURhnz_WkL9cepvU96hC2mp6SE", res.at("/matchID").asText());
+        assertEquals("ID", res.at("/fields/0/key").asText());
+
+        MatchIdentifier.initMac("");
+    };
+
+    
 
     @Test
     public void indexNewStructure () throws IOException, QueryException {
