package edu.uncc.cs.watsonsim.scorers;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import edu.uncc.cs.watsonsim.Answer;
import edu.uncc.cs.watsonsim.Environment;
import edu.uncc.cs.watsonsim.Question;
import edu.uncc.cs.watsonsim.nlp.ApproxStringIntMap;
public class WPPageViews extends AnswerScorer {
private static ApproxStringIntMap pageviews = new ApproxStringIntMap(null);
public WPPageViews(Environment env) {
load(env);
}
private static synchronized void load(Environment env) {
if (pageviews.isEmpty()) {
int collisions = 0;
try {
ResultSet res = env.db.prep(
"SELECT title, page_views FROM page_views;")
.executeQuery();
while (res.next()) {
collisions += pageviews.containsKey(res.getString(1).toLowerCase()) ? 1 : 0;
pageviews.put(res.getString(1).toLowerCase(), res.getInt(2));
}
} catch (SQLException e) {
// at worst give 0s
e.printStackTrace();
}
System.out.println("Loaded view data about " + pageviews.size() + " pages "
+ "(" + collisions + " collisions)");
}
}
@Override
public double scoreAnswer(Question q, Answer a) {
return pageviews.get(a.toString().toLowerCase());
}
}