add hint of query syntax in AccessTracker log (qs=normal querystring,

sq=solr-querystring) to allow to filter simple text queries for processing,
remove toString for counter parameter
use more predefined constants in solrservlet
pull/110/head
reger 8 years ago
parent e5858bc8c8
commit cc770512d5

@ -261,7 +261,7 @@ public class GSAsearchServlet extends HttpServlet {
} else if (rv != null && rv instanceof SolrDocumentList) { } else if (rv != null && rv instanceof SolrDocumentList) {
matches = (int) ((SolrDocumentList) rv).getNumFound(); matches = (int) ((SolrDocumentList) rv).getNumFound();
} }
AccessTracker.addToDump(originalQuery, Integer.toString(matches)); AccessTracker.addToDump(originalQuery, matches);
ConcurrentLog.info("GSA Query", "results: " + matches + ", for query:" + post.toString()); ConcurrentLog.info("GSA Query", "results: " + matches + ", for query:" + post.toString());
} }

@ -39,7 +39,6 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import net.yacy.cora.federate.FederateSearchManager;
import net.yacy.cora.federate.solr.Ranking; import net.yacy.cora.federate.solr.Ranking;
import net.yacy.cora.federate.solr.connector.EmbeddedSolrConnector; import net.yacy.cora.federate.solr.connector.EmbeddedSolrConnector;
import net.yacy.cora.federate.solr.connector.SolrConnector; import net.yacy.cora.federate.solr.connector.SolrConnector;
@ -162,16 +161,16 @@ public class SolrSelectServlet extends HttpServlet {
String q = mmsp.get(CommonParams.Q, ""); String q = mmsp.get(CommonParams.Q, "");
if (querystring.length() == 0) querystring = q; if (querystring.length() == 0) querystring = q;
if (!mmsp.getMap().containsKey(CommonParams.START)) { if (!mmsp.getMap().containsKey(CommonParams.START)) {
int startRecord = mmsp.getFieldInt("startRecord", null, 0); int startRecord = mmsp.getFieldInt("startRecord", null, CommonParams.START_DEFAULT);
mmsp.getMap().remove("startRecord"); mmsp.getMap().remove("startRecord");
mmsp.getMap().put(CommonParams.START, new String[]{Integer.toString(startRecord)}); // sru patch mmsp.getMap().put(CommonParams.START, new String[]{Integer.toString(startRecord)}); // sru patch
} }
if (!mmsp.getMap().containsKey(CommonParams.ROWS)) { if (!mmsp.getMap().containsKey(CommonParams.ROWS)) {
int maximumRecords = mmsp.getFieldInt("maximumRecords", null, 10); int maximumRecords = mmsp.getFieldInt("maximumRecords", null, CommonParams.ROWS_DEFAULT);
mmsp.getMap().remove("maximumRecords"); mmsp.getMap().remove("maximumRecords");
mmsp.getMap().put(CommonParams.ROWS, new String[]{Integer.toString(maximumRecords)}); // sru patch mmsp.getMap().put(CommonParams.ROWS, new String[]{Integer.toString(maximumRecords)}); // sru patch
} }
mmsp.getMap().put(CommonParams.ROWS, new String[]{Integer.toString(Math.min(mmsp.getInt(CommonParams.ROWS, 10), (authenticated) ? 100000000 : 100))}); mmsp.getMap().put(CommonParams.ROWS, new String[]{Integer.toString(Math.min(mmsp.getInt(CommonParams.ROWS, CommonParams.ROWS_DEFAULT), (authenticated) ? 100000000 : 100))});
// set ranking according to profile number if ranking attributes are not given in the request // set ranking according to profile number if ranking attributes are not given in the request
Ranking ranking = sb.index.fulltext().getDefaultConfiguration().getRanking(profileNr); Ranking ranking = sb.index.fulltext().getDefaultConfiguration().getRanking(profileNr);
@ -207,9 +206,9 @@ public class SolrSelectServlet extends HttpServlet {
if (!mmsp.getMap().containsKey("hl.simple.pre")) mmsp.getMap().put("hl.simple.pre", new String[]{"<b>"}); if (!mmsp.getMap().containsKey("hl.simple.pre")) mmsp.getMap().put("hl.simple.pre", new String[]{"<b>"});
if (!mmsp.getMap().containsKey("hl.simple.post")) mmsp.getMap().put("hl.simple.post", new String[]{"</b>"}); if (!mmsp.getMap().containsKey("hl.simple.post")) mmsp.getMap().put("hl.simple.post", new String[]{"</b>"});
if (!mmsp.getMap().containsKey("hl.fragsize")) mmsp.getMap().put("hl.fragsize", new String[]{Integer.toString(SearchEvent.SNIPPET_MAX_LENGTH)}); if (!mmsp.getMap().containsKey("hl.fragsize")) mmsp.getMap().put("hl.fragsize", new String[]{Integer.toString(SearchEvent.SNIPPET_MAX_LENGTH)});
if (!mmsp.getMap().containsKey("fl")) mmsp.getMap().put("fl", new String[]{ if (!mmsp.getMap().containsKey(CommonParams.FL)) mmsp.getMap().put(CommonParams.FL, new String[]{
CollectionSchema.sku.getSolrFieldName() + "," + CollectionSchema.sku.getSolrFieldName() + "," +
CollectionSchema.title + "," + CollectionSchema.title.getSolrFieldName() + "," +
CollectionSchema.description_txt.getSolrFieldName() + "," + CollectionSchema.description_txt.getSolrFieldName() + "," +
CollectionSchema.id.getSolrFieldName() + "," + CollectionSchema.id.getSolrFieldName() + "," +
CollectionSchema.url_paths_sxt.getSolrFieldName() + "," + CollectionSchema.url_paths_sxt.getSolrFieldName() + "," +
@ -254,7 +253,7 @@ public class SolrSelectServlet extends HttpServlet {
// check error // check error
if (rsp.getException() != null) { if (rsp.getException() != null) {
AccessTracker.addToDump(querystring, "0", new Date()); AccessTracker.addToDump(querystring, 0, new Date(), "sq");
sendError(hresponse, rsp.getException()); sendError(hresponse, rsp.getException());
return; return;
} }
@ -263,7 +262,7 @@ public class SolrSelectServlet extends HttpServlet {
NamedList<?> values = rsp.getValues(); NamedList<?> values = rsp.getValues();
DocList r = ((ResultContext) values.get("response")).docs; DocList r = ((ResultContext) values.get("response")).docs;
int numFound = r.matches(); int numFound = r.matches();
AccessTracker.addToDump(querystring, Integer.toString(numFound), new Date()); AccessTracker.addToDump(querystring, numFound, new Date(), "sq");
// write response header // write response header
final String contentType = responseWriter.getContentType(req, rsp); final String contentType = responseWriter.getContentType(req, rsp);

@ -154,14 +154,22 @@ public class AccessTracker {
private static void addToDump(final QueryParams query, int resultCount) { private static void addToDump(final QueryParams query, int resultCount) {
String queryString = query.getQueryGoal().getQueryString(false); String queryString = query.getQueryGoal().getQueryString(false);
if (queryString == null || queryString.isEmpty()) return; if (queryString == null || queryString.isEmpty()) return;
addToDump(queryString, Integer.toString(resultCount), new Date(query.starttime)); addToDump(queryString, resultCount, new Date(query.starttime), "qs");
} }
public static void addToDump(String querystring, String resultcount) { public static void addToDump(String querystring, int resultCount) {
addToDump(querystring, resultcount, new Date()); addToDump(querystring, resultCount, new Date(), "qs");
} }
public static void addToDump(String querystring, String resultcount, Date d) { /**
* Add a line to the queries log
*
* @param querystring the original query
* @param resultcount found results
* @param d start time
* @param querySyntax used syntax (qs=normal querstring, sq=solr querystring,
*/
public static void addToDump(String querystring, int resultcount, Date d, String querySyntax) {
//if (query.resultcount == 0) return; //if (query.resultcount == 0) return;
if (querystring == null || querystring.isEmpty()) return; if (querystring == null || querystring.isEmpty()) return;
final StringBuilder sb = new StringBuilder(40); final StringBuilder sb = new StringBuilder(40);
@ -169,6 +177,8 @@ public class AccessTracker {
sb.append(' '); sb.append(' ');
sb.append(resultcount); sb.append(resultcount);
sb.append(' '); sb.append(' ');
sb.append(querySyntax);
sb.append(' ');
sb.append(querystring); sb.append(querystring);
synchronized (log) { synchronized (log) {
log.add(sb.toString()); log.add(sb.toString());
@ -332,15 +342,15 @@ public class AccessTracker {
public static void main(String[] args) { public static void main(String[] args) {
// i.e. /Users/admin/git/rc1/DATA/LOG/queries.log 20140522135156 20140614223118 // i.e. /Users/admin/git/rc1/DATA/LOG/queries.log 20140522135156 20140614223118
String file = args[0]; String file = "C:\\src\\github\\yacy_search_server\\DATA\\LOG\\queries.log";
Date from; Date from;
try { // try {
from = GenericFormatter.SHORT_SECOND_FORMATTER.parse(args[1], 0).getTime(); from = new Date(0);//GenericFormatter.SHORT_SECOND_FORMATTER.parse(args[1], 0).getTime();
Date to = GenericFormatter.SHORT_SECOND_FORMATTER.parse(args[2], 0).getTime(); Date to = new Date();//GenericFormatter.SHORT_SECOND_FORMATTER.parse(args[2], 0).getTime();
List<EventTracker.Event> dump = readLog(new File(file), from, to); List<EventTracker.Event> dump = readLog(new File(file), from, to);
for (EventTracker.Event s: dump) System.out.println(s.toString()); for (EventTracker.Event s: dump) System.out.println(s.toString());
} catch (ParseException e) { // } catch (ParseException e) {
e.printStackTrace(); // e.printStackTrace();
} // }
} }
} }

Loading…
Cancel
Save