diff --git a/dev/js/spec/queryCreatorSpec.js b/dev/js/spec/queryCreatorSpec.js
index c3e041d..16b8c36 100644
--- a/dev/js/spec/queryCreatorSpec.js
+++ b/dev/js/spec/queryCreatorSpec.js
@@ -72,7 +72,7 @@
     "          <th>corenlp</th>" +
     "          <th>p</th>" +
     "          <td>ART</td>" +
-    "          <td>ADJA</td>" +
+    "          <td class=\"notinindex\">ADJA</td>" +
     "          <td>ADJA<br>ADJD</td>" +
     "          <td class=\"matchkeyvalues mark\">" +
     "            <div>case:nom</div>" +
@@ -86,7 +86,7 @@
     "          <td class=\"matchkeyvalues\">" +
     "            <div>case:nom</div>" +
     "            <div>gender:masc</div>" +
-    "            <div>number:sg</div>" +
+    "            <div class=\"notinindex\">number:sg</div>" +
     "            <div>morphemes:.::_SORSZ \\ZERO::NOM 'period::PUNCT'</div>" +
     "            <div>morphemes:ZERO::NOM</div>" +
     "          </td>" +
@@ -626,6 +626,27 @@
       expect(cell.classList.contains("chosen")).toBe(false);
       expect(qc.toString()).toEqual("");
 
+      // notinindex
+      cell = matchTable.querySelector("tbody > tr:nth-child(2) > td > div:nth-child(3)");
+      expect(cell.innerString()).toEqual("number:sg");
+      expect(cell.classList.contains("chosen")).toBe(false);
+      cell.click();
+      expect(cell.classList.contains("chosen")).toBe(false);
+      expect(qc.toString()).toEqual("");
+      cell.click()
+      expect(cell.classList.contains("chosen")).toBe(false);
+      expect(qc.toString()).toEqual("");
+
+      cell = matchTable.querySelector("tbody > tr:nth-child(1) > td.notinindex");
+      expect(cell.innerString()).toEqual("ADJA");
+      expect(cell.classList.contains("chosen")).toBe(false);
+      cell.click();
+      expect(cell.classList.contains("chosen")).toBe(false);
+      expect(qc.toString()).toEqual("");
+      cell.click()
+      expect(cell.classList.contains("chosen")).toBe(false);
+      expect(qc.toString()).toEqual("");
+      
       cell = matchTable.querySelector("tbody > tr:nth-child(3) > td:nth-child(3)");
       expect(cell.classList.contains("chosen")).toBe(false);
       cell.click();
diff --git a/dev/js/src/match/querycreator.js b/dev/js/src/match/querycreator.js
index f4b819f..12614d3 100644
--- a/dev/js/src/match/querycreator.js
+++ b/dev/js/src/match/querycreator.js
@@ -121,7 +121,7 @@
 
         if (target.tagName == 'TD') {
 
-          if (target.innerText == '')
+          if (target.innerText == '' || target.classList.contains("notinindex"))
             return;
 
           if (target.classList.contains('matchkeyvalues'))
@@ -154,7 +154,7 @@
         // The annotation is part of a key-value-pair
         else if (target.tagName == 'SPAN' || target.tagName == 'DIV') {
 
-          if (target.innerText == '')
+          if (target.innerText == '' || target.classList.contains("notinindex"))
             return;
 
           if (target.tagName == 'SPAN') {
diff --git a/dev/js/src/match/table.js b/dev/js/src/match/table.js
index a8ccdc6..59ebf75 100644
--- a/dev/js/src/match/table.js
+++ b/dev/js/src/match/table.js
@@ -17,7 +17,8 @@
    */
   const _TermRE = new RegExp("^(?:([^\/]+?)\/)?([^:]+?):(.+?)$");
   const d = document;
-
+  const notinindexSuffix = "_NOTININDEX";
+ 
   return {
 
     /**
@@ -149,7 +150,11 @@
             };
 
             value = RegExp.$3;
-      
+
+	    if (c.classList.contains("notinindex")) {
+	      value += notinindexSuffix;
+	    };
+	    
             if (found[foundry + "/" + layer] === undefined) {
               found[foundry + "/" + layer] = [value];
             }
@@ -232,7 +237,14 @@
 
           let e, anno;
           value.forEach(function(v) {
+
             e = c.addE('div');
+
+	    if (v.endsWith(notinindexSuffix)) {
+	      v = v.slice(0, -11);
+	      e.classList.add("notinindex");
+	    };
+	    
             e.addT(v);
 
             anno = ah.getDesc(key, v);
@@ -247,6 +259,11 @@
           if (value instanceof Array)
             value = value[0];
 
+	  if (value.endsWith(notinindexSuffix)) {
+	    value = value.slice(0, -11);
+	    c.classList.add("notinindex");
+	  };
+	  
           c.addT(value);
 
           // Add tooltip
