diff --git a/lib/Korap/Plugin/KorapSearch.pm b/lib/Korap/Plugin/KorapSearch.pm
index fd30c15..70a539b 100644
--- a/lib/Korap/Plugin/KorapSearch.pm
+++ b/lib/Korap/Plugin/KorapSearch.pm
@@ -74,7 +74,8 @@
 		       1
 		     ));
 
-      my $query = $param{query} // scalar $c->param('q');
+      my $query = $param{query}   // scalar $c->param('q');
+      my $cutoff = $param{cutoff} // scalar $c->param('cutoff') // undef;
 
       return '' unless $query;
 
@@ -108,6 +109,7 @@
       my %query = (q => $query);
       $query{ql} = scalar $c->param('ql') // 'poliqarp';
       $query{count} = $count if $count;
+      $query{cutoff} = 'true' if $cutoff;
 
       $url->query(\%query);
       my $cache_url = $url->to_string;
@@ -119,7 +121,9 @@
       if (defined $total_results) {
 	$c->stash('search.totalResults' => $total_results);
 	$c->app->log->debug('Get total result from cache');
-	$url->query({cutoff => 'true'});
+
+	# Set cutoff unless already set
+	$url->query({cutoff => 'true'}) unless defined $cutoff;
       }
       else {
 	$c->stash('search.totalResults' => 0);
@@ -173,10 +177,10 @@
 
 	if ($json->{totalResults} && $json->{totalResults} > -1) {
 	  $c->app->log->debug('Cache total result');
-	  $c->stash('search.totalResults' => $json->{totalResults});
 	  $c->chi->set('total-' . $cache_url => $json->{totalResults}, '30min');
 	};
 
+	$c->stash('search.totalResults' => $json->{totalResults});
 	if ($json->{warning}) {
 	  $c->notify(warn => $json->{warning});
 	};
diff --git a/lib/Korap/Plugin/KorapTagHelpers.pm b/lib/Korap/Plugin/KorapTagHelpers.pm
index 25ca691..6ce4af2 100644
--- a/lib/Korap/Plugin/KorapTagHelpers.pm
+++ b/lib/Korap/Plugin/KorapTagHelpers.pm
@@ -8,15 +8,18 @@
 
   $mojo->helper(
     korap_tut_query => sub {
-      my ($c, $ql, $q) = @_;
+      my ($c, $ql, $q, %param) = @_;
       my $onclick = 'top.useQuery(this)';
       if ($c->param('embedded')) {
 	$onclick = 'setTutorialPage(this);' . $onclick;
       };
       $q = xml_escape $q;
       b('<pre class="query tutorial" onclick="' . $onclick . '" ' .
-	  qq!data-query="$q" data-query-language="$ql"><code>! .
-	    $q . '</code></pre>');
+	  qq!data-query="$q" data-query-cutoff="! .
+	    ($param{cutoff} ? 1 : 0) .
+	      '"' .
+		qq! data-query-language="$ql"><code>! .
+		  $q . '</code></pre>');
     }
   );
 
diff --git a/templates/layouts/default.html.ep b/templates/layouts/default.html.ep
index c5ab254..2c2030c 100644
--- a/templates/layouts/default.html.ep
+++ b/templates/layouts/default.html.ep
@@ -50,7 +50,7 @@
 <div id="top">
   <a href="<%= url_for 'index' %>"><h1><span>KorAP- Korpusanalyseplattform der nächsten Generation</span></h1></a>
 
-%= form_for $search_route => begin
+%= form_for $search_route, autocomplete => 'off' => begin
   <div id="searchbar">
 %= search_field 'q', id => 'q-field', autofocus => 'autofocus', placeholder => 'Find ...'
     <button type="submit"><i class="fa fa-search"></i></button>
@@ -63,7 +63,7 @@
   <div class="select">
     %= select_field ql => [[Poliqarp => 'poliqarp'], ['Cosmas II' => 'cosmas2'], ['Annis' => 'annis'], ['CQL v1.2' => 'cql']], id => 'ql-field'
   </div>
-
+%= hidden_field 'cutoff' => 0, id => 'q-cutoff-field'
 
 <div id="button-right">
 % unless (current_route 'tutorial') {
diff --git a/templates/match.html.ep b/templates/match.html.ep
index 19d459a..447ad32 100644
--- a/templates/match.html.ep
+++ b/templates/match.html.ep
@@ -13,7 +13,7 @@
 % if ($match->{title}) {
     <strong><%= $match->{title} %></strong>
 % };
-    <%= $match->{author} ? ' by ' . $match->{author}  : '' %><% if ($match->{title} || $match->{author}) %>;<% } %>
+    <%= $match->{author} ? ' by ' . $match->{author}  : '' %><% if ($match->{title} || $match->{author}) { %>;<% } %>
     published on <%= date_format $match->{pubDate} %>
     as <%= $match->{docID} %> (<%= $match->{corpusID} %>)
   </p>
diff --git a/templates/partial/javascript.html.ep b/templates/partial/javascript.html.ep
index 2281441..055ddf2 100644
--- a/templates/partial/javascript.html.ep
+++ b/templates/partial/javascript.html.ep
@@ -17,6 +17,7 @@
       "ne_dewac_175m_600" : ["ne_dewac_175m_600=", "Named Entity"],
       "ne_hgc_175m_600" : ["ne_hgc_175m_600=", "Named Entity"]
     },
+    "corenlp/ne" : ["I-LOC","I-MISC","I-ORG","I-PER"],
     "corenlp/ne_dewac_175m_600" : ["I-LOC","I-MISC","I-ORG","I-PER"],
     "corenlp/ne_hgc_175m_600" : ["I-LOC","I-MISC","I-ORG","I-PER"],
     "cnx" : {
@@ -75,8 +76,12 @@
 function useQuery (o) {
   var q = o.getAttribute("data-query");
   var ql = o.getAttribute("data-query-language");
+  var qc = o.getAttribute("data-query-cutoff");
+  if (qc === null)
+    qc = 0;
   $("#ql-field").val(ql);
   $("#q-field").val(q);
+  $("#q-cutoff-field").val(qc);
   closeTutorial();
 };
 
diff --git a/templates/search.html.ep b/templates/search.html.ep
index 47191b9..abab210 100644
--- a/templates/search.html.ep
+++ b/templates/search.html.ep
@@ -8,7 +8,7 @@
 %       $pages = $pages < 0 ? 0 : $pages;
   <div id="pagination"><%= pagination(stash('search.startPage'), $pages, $url) =%></div>
   <p class="found">Found
-    <span id="total-results"><%= commify(stash('search.totalResults')) %> matches</span>
+    <span id="total-results"><% if (stash('search.totalResults') == -1) { %>unknown<% } else { %><%= commify(stash('search.totalResults')) %><% } %> matches</span>
     <% if (stash 'search.benchmark') { %> in <%= stash 'search.benchmark' %><% } %>
   </p>
 </div>
diff --git a/templates/tutorial/index.html.ep b/templates/tutorial/index.html.ep
index cf112fb..a76de5c 100644
--- a/templates/tutorial/index.html.ep
+++ b/templates/tutorial/index.html.ep
@@ -43,10 +43,10 @@
 %= korap_tut_query cosmas2 => 'der /w5 Baum'
 
 <p><strong>Poliqarp+</strong>: Find all nominal phrases as annotated using Connexor, that contain an adverb as annotated by OpenNLP.</p>
-%= korap_tut_query poliqarp => 'contains(<cnx/c=np>,[opennlp/p=ADV])'
+%= korap_tut_query poliqarp => 'contains(<cnx/c=np>,[opennlp/p=ADV])', cutoff => 1
 
 <p><strong>Poliqarp+</strong>: Find all sentences as annotated by the base foundry that start with a sequence of one token in present tense as annotated by Connexor and the lemma &quot;der&quot; annotated by the <%= korap_tut_link_to 'default foundry', '/tutorial/foundries' %>. Highlight both terms of the sequence.</p>
-%= korap_tut_query poliqarp => 'startswith(<s>, {1:[cnx/m=PRES]}{2:[base=der]})'
+%= korap_tut_query poliqarp => 'startswith(<s>, {1:[cnx/m=PRES]}{2:[base=der]})', cutoff => 1
 
 <p><strong>Annis</strong>: Find all occurrences of the sequence of two tokens annotated as adverbs by the <%= korap_tut_link_to 'default foundry', '/tutorial/foundries' %>.</p>
 %= korap_tut_query annis => 'pos="ADV" & pos="ADV" & #1 . #2'
