Skip to content

Instantly share code, notes, and snippets.

@ottomata
Created July 6, 2012 21:38
Show Gist options
  • Save ottomata/3062890 to your computer and use it in GitHub Desktop.
Save ottomata/3062890 to your computer and use it in GitHub Desktop.
diff --git a/template/simple/lsearch.log4j b/template/simple/lsearch.log4j
index 8283994..b99eda7 100644
--- a/template/simple/lsearch.log4j
+++ b/template/simple/lsearch.log4j
@@ -1,9 +1,16 @@
# Set root logger level and its only appender to A1.
-log4j.rootLogger=INFO, A1
+log4j.rootLogger=INFO, scribe
-# A1 is set to be a ConsoleAppender.
-log4j.appender.A1=org.apache.log4j.ConsoleAppender
+# log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+# log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+# log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd'T'HH:mm:ss.SSS} %m%n
+
+log4j.appender.scribe=org.apache.log4j.net.ScribeAppender
+log4j.appender.scribe.category=lucene
+log4j.appender.scribe.remoteHost=127.0.0.1
+log4j.appender.scribe.layout=org.apache.log4j.PatternLayout
+log4j.appender.scribe.layout.ConversionPattern=%d{yyyy-MM-dd'T'HH:mm:ss.SSS} %m
+
+log4j.logger.org.wikimedia.lsearch.search.SearchEngine=WARN
+log4j.logger.org.wikimedia.lsearch.spell.Suggest=WARN
-# A1 uses PatternLayout.
-log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
diff --git a/src/org/wikimedia/lsearch/frontend/SearchDaemon.java b/src/org/wikimedia/lsearch/frontend/SearchDaemon.java
index bf6771d..ef8d6bc 100644
--- a/src/org/wikimedia/lsearch/frontend/SearchDaemon.java
+++ b/src/org/wikimedia/lsearch/frontend/SearchDaemon.java
@@ -91,7 +91,7 @@ public class SearchDaemon extends HttpHandler {
dbname = paths[2];
searchterm = paths[3].trim();
- log.info(MessageFormat.format("query:{0} what:{1} dbname:{2} term:{3}",
+ log.debug(MessageFormat.format("query:{0} what:{1} dbname:{2} term:{3}",
new Object[] {rawUri, what, dbname, searchterm}));
try{
long start = System.currentTimeMillis();
@@ -99,6 +99,9 @@ public class SearchDaemon extends HttpHandler {
HashMap query = new QueryStringMap(uri);
double version = getVersion(query);
SearchResults res = search.search(dbname,what,searchterm,query,version);
+
+ logResults(dbname, searchterm, res);
+
contentType = "text/plain";
long delta = System.currentTimeMillis() - start;
// format:
@@ -293,6 +296,10 @@ public class SearchDaemon extends HttpHandler {
/** URL-encoding */
private String encode(String text){
+ if (text == null)
+ {
+ return "";
+ }
try {
String s = URLEncoder.encode(text, "UTF-8");
return s.replaceAll("\\+","%20");
@@ -444,5 +451,44 @@ public class SearchDaemon extends HttpHandler {
log.error("Error sending prefix result line (" + namespace + " " + title +"): "+e.getMessage(),e);
}
}
+
+
+ /**
+ * Logs search and the first search result.
+ *
+ * @param String dbname
+ * @param String searchterm
+ * @param SearchResults res
+ */
+ protected void logResults(String dbname, String searchterm, SearchResults res) {
+ // log the top result of this search query
+ String resultScore = null;
+ String resultInterwiki = null;
+ String resultNamespace = null;
+ String resultNamespaceTextual = null;
+ String resultTitle = null;
+
+ ResultSet resultSet = null;
+ if ( res != null && res.getResults() != null && res.getResults().size() > 0 ) {
+ resultSet = res.getResults().get(0);
+
+ resultScore = Double.toString(resultSet.getScore());
+ resultInterwiki = encode(resultSet.getInterwiki());
+ resultNamespace = resultSet.getNamespace();
+ resultNamespaceTextual = encode(resultSet.getNamespaceTextual());
+ resultTitle = encodeTitle(resultSet.getTitle());
+ }
+
+ log.info(String.format("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s",
+ (dbname == null || dbname.isEmpty()) ? "-" : dbname,
+ (searchterm == null || searchterm.isEmpty()) ? "-" : encode(searchterm),
+ res.getResults().size(),
+ (resultScore == null || searchterm.isEmpty()) ? "-" : resultScore,
+ (resultInterwiki == null || resultInterwiki.isEmpty()) ? "-" : resultInterwiki,
+ (resultNamespace == null || resultNamespace.isEmpty()) ? "-" : resultNamespace,
+ (resultNamespaceTextual == null || resultNamespaceTextual.isEmpty()) ? "-" : encode(resultNamespaceTextual),
+ (resultTitle == null || resultTitle.isEmpty()) ? "-" : encodeTitle(resultTitle)
+ ));
+ }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment