diff --git a/htroot/IndexControlURLs_p.java b/htroot/IndexControlURLs_p.java index 6bae5637e..c1e4ca30b 100644 --- a/htroot/IndexControlURLs_p.java +++ b/htroot/IndexControlURLs_p.java @@ -84,7 +84,7 @@ public class IndexControlURLs_p { List dumpFiles = segment.fulltext().dumpFiles(); prop.put("dumprestore_dumpfile", dumpFiles.size() == 0 ? "" : dumpFiles.get(dumpFiles.size() - 1).getAbsolutePath()); prop.put("dumprestore_optimizemax", 10); - prop.put("cleanup", post == null ? 1 : 0); + prop.put("cleanup", post == null || post.size() == 0 ? 1 : 0); prop.put("cleanup_solr", segment.fulltext().connectedRemoteSolr() ? 1 : 0); prop.put("cleanup_rwi", segment.termIndex() != null && !segment.termIndex().isEmpty() ? 1 : 0); prop.put("cleanup_citation", segment.connectedCitation() && !segment.urlCitation().isEmpty() ? 1 : 0); diff --git a/source/net/yacy/http/servlets/SolrServlet.java b/source/net/yacy/http/servlets/SolrServlet.java index a54b931a9..9122d06f6 100644 --- a/source/net/yacy/http/servlets/SolrServlet.java +++ b/source/net/yacy/http/servlets/SolrServlet.java @@ -27,6 +27,7 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.io.Writer; import java.net.URL; +import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -51,6 +52,7 @@ import net.yacy.cora.federate.solr.responsewriter.OpensearchResponseWriter; import net.yacy.cora.federate.solr.responsewriter.YJsonResponseWriter; import net.yacy.search.Switchboard; import net.yacy.search.SwitchboardConstants; +import net.yacy.search.query.AccessTracker; import net.yacy.search.query.QueryGoal; import net.yacy.search.query.QueryModifier; import net.yacy.search.query.SearchEvent; @@ -67,8 +69,10 @@ import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.request.SolrRequestInfo; import org.apache.solr.response.BinaryResponseWriter; import org.apache.solr.response.QueryResponseWriter; +import org.apache.solr.response.ResultContext; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.response.XSLTResponseWriter; +import org.apache.solr.search.DocList; import org.apache.solr.servlet.SolrRequestParsers; import org.apache.solr.servlet.cache.HttpCacheHeaderUtil; import org.apache.solr.servlet.cache.Method; @@ -161,8 +165,9 @@ public class SolrServlet implements Filter { int profileNr = mmsp.getInt("profileNr", 0); // rename post fields according to result style + String querystring = ""; if (!mmsp.getMap().containsKey(CommonParams.Q) && mmsp.getMap().containsKey("query")) { - String querystring = mmsp.get("query", ""); + querystring = mmsp.get("query", ""); mmsp.getMap().remove("query"); QueryModifier modifier = new QueryModifier(); querystring = modifier.parse(querystring); @@ -172,6 +177,7 @@ public class SolrServlet implements Filter { mmsp.getMap().put(CommonParams.Q, new String[]{solrQ.toString()}); // sru patch } String q = mmsp.get(CommonParams.Q, ""); + if (querystring.length() == 0) querystring = q; if (!mmsp.getMap().containsKey(CommonParams.START)) { int startRecord = mmsp.getFieldInt("startRecord", "0"); mmsp.getMap().remove("startRecord"); @@ -239,10 +245,17 @@ public class SolrServlet implements Filter { // check error if (rsp.getException() != null) { + AccessTracker.addToDump(querystring, "0", new Date()); sendError(hresponse, rsp.getException()); return; } + + NamedList values = rsp.getValues(); + DocList r = ((ResultContext) values.get("response")).docs; + int numFound = r.matches(); + AccessTracker.addToDump(querystring, Integer.toString(numFound), new Date()); + // write response header final String contentType = responseWriter.getContentType(req, rsp); if (null != contentType) response.setContentType(contentType); diff --git a/source/net/yacy/search/query/AccessTracker.java b/source/net/yacy/search/query/AccessTracker.java index eee6e3d38..27d1ef408 100644 --- a/source/net/yacy/search/query/AccessTracker.java +++ b/source/net/yacy/search/query/AccessTracker.java @@ -122,7 +122,7 @@ public class AccessTracker { } } - private static void addToDump(String querystring, String resultcount, Date d) { + public static void addToDump(String querystring, String resultcount, Date d) { //if (query.resultcount == 0) return; if (querystring == null || querystring.isEmpty()) return; final StringBuilder sb = new StringBuilder(40);