Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.13 KB | None | 0 0
  1. package edu.wiki.service;
  2.  
  3. import java.io.*;
  4. import java.sql.Connection;
  5. import java.sql.DriverManager;
  6. import java.sql.SQLException;
  7. import java.sql.Statement;
  8. import java.text.DecimalFormat;
  9. import java.text.NumberFormat;
  10. import java.util.Locale;
  11. import java.util.Map;
  12. import java.util.TreeMap;
  13.  
  14. import javax.servlet.ServletConfig;
  15. import javax.servlet.ServletContext;
  16. import javax.servlet.ServletException;
  17. import javax.servlet.http.HttpServlet;
  18. import javax.servlet.http.HttpServletRequest;
  19. import javax.servlet.http.HttpServletResponse;
  20.  
  21. import edu.wiki.api.concept.IConceptIterator;
  22. import edu.wiki.api.concept.IConceptVector;
  23. import edu.wiki.search.ESASearcher;
  24. import edu.wiki.search.NormalizedWikipediaDistance;
  25.  
  26. public class ESAServlet extends HttpServlet {
  27.  
  28. private static final long serialVersionUID = 1L;
  29.  
  30. protected ServletContext context;
  31.  
  32. protected NormalizedWikipediaDistance nwd;
  33.  
  34. protected DecimalFormat df = (DecimalFormat) NumberFormat.getInstance(Locale.US);
  35.  
  36.  
  37. static Connection connection;
  38. static Statement stmtQuery;
  39.  
  40. static String strTitles = "SELECT id,title FROM article WHERE id IN ";
  41.  
  42. public static void initDB() throws ClassNotFoundException, SQLException, IOException {
  43. // Load the JDBC driver
  44. String driverName = "com.mysql.jdbc.Driver"; // MySQL Connector
  45. Class.forName(driverName);
  46.  
  47. // read DB config
  48. InputStream is = ESASearcher.class.getResourceAsStream("/config/db.conf");
  49. BufferedReader br = new BufferedReader(new InputStreamReader(is));
  50. String serverName = br.readLine();
  51. String mydatabase = br.readLine();
  52. String username = br.readLine();
  53. String password = br.readLine();
  54. br.close();
  55.  
  56. // Create a connection to the database
  57. String url = "jdbc:mysql://" + serverName + "/" + mydatabase; // a JDBC url
  58. connection = DriverManager.getConnection(url, username, password);
  59.  
  60. stmtQuery = connection.createStatement();
  61. stmtQuery.setFetchSize(100);
  62. }
  63.  
  64.  
  65. public void init(ServletConfig config) throws ServletException {
  66. super.init(config);
  67. context = config.getServletContext();
  68.  
  69. nwd = new NormalizedWikipediaDistance(context.getInitParameter("index_path"));
  70. try {
  71. // esa = new ESASearcher();
  72. initDB();
  73. } catch (Exception e) {
  74. e.printStackTrace();
  75. throw new ServletException();
  76. }
  77. }
  78.  
  79. public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
  80.  
  81. doGet(request, response);
  82.  
  83. }
  84.  
  85. public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
  86. ESASearcher esa = null;
  87. try {
  88. esa = new ESASearcher();
  89. } catch (Exception e) {
  90.  
  91. }
  92. try {
  93.  
  94. response.setHeader("Cache-Control", "no-cache");
  95. response.setCharacterEncoding("UTF-8");
  96.  
  97. String task = request.getParameter("task");
  98.  
  99. //redirect to home page if there is no task
  100. if (task == null) {
  101. response.setContentType("text/html");
  102. response.getWriter().append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"><html><head><meta http-equiv=\"REFRESH\" content=\"0;url=" + context.getInitParameter("server_path") + "></head><body></body></html>");
  103. return;
  104. }
  105.  
  106. //process compare request
  107. if (task.equals("nwd")) {
  108. String term1 = request.getParameter("term1");
  109. String term2 = request.getParameter("term2");
  110.  
  111. if (term1 == null || term2 == null) {
  112. response.setContentType("text/html");
  113. response.getWriter().append("-1");
  114. return;
  115. } else {
  116. final double distance = nwd.getDistance(term1, term2);
  117. response.setContentType("text/html");
  118. response.getWriter().append(df.format(distance));
  119. return;
  120. }
  121.  
  122. }
  123.  
  124. //process compare request
  125. if (task.equals("esa")) {
  126. String term1 = request.getParameter("term1");
  127. String term2 = request.getParameter("term2");
  128.  
  129. if (term1 == null || term2 == null) {
  130. response.setContentType("text/html");
  131. response.getWriter().append("-1");
  132. return;
  133. } else {
  134. final double sim = esa.getRelatedness(term1, term2);
  135. response.setContentType("text/html");
  136. response.getWriter().append(df.format(sim));
  137. return;
  138. }
  139.  
  140. }
  141.  
  142. //process compare request
  143. if (task.equals("vector")) {
  144. final String source = request.getParameter("source");
  145. final String strLimit = request.getParameter("limit");
  146. int limit;
  147. limit = (strLimit == null) ? 200000 : Integer.valueOf(strLimit);
  148.  
  149. if (source == null) {
  150. response.setContentType("text/html");
  151. response.getWriter().append("null");
  152. return;
  153. } else {
  154. response.setContentType("text/html");
  155. final IConceptVector cv = esa.getConceptVector(source);
  156. if (cv == null) {
  157. response.getWriter().append("");
  158. } else {
  159. final IConceptVector ncv = esa.getNormalVector(cv, limit);
  160. final IConceptIterator it = ncv.orderedIterator();
  161. int count = 0;
  162. TreeMap<Integer, Double> tree = new TreeMap<>();
  163. while (it.next() && count < limit) {
  164. tree.put(it.getId(), it.getValue());
  165. count++;
  166. }
  167.  
  168. String ret = "";
  169. for (Map.Entry<Integer, Double> entry : tree.entrySet()) {
  170. ret += " " + entry.getKey() + ":" + entry.getValue();
  171. }
  172. response.getWriter().append(ret);
  173. response.getWriter().append('\n').append(source);
  174. System.out.println("-----------------");
  175. System.out.println(source);
  176. PrintStream out = new PrintStream(System.out, true, "UTF-8");
  177. out.println(source);
  178. }
  179. return;
  180. }
  181. }
  182. } catch (Exception error) {
  183. response.reset();
  184. response.setContentType("application/xml");
  185. response.setHeader("Cache-Control", "no-cache");
  186. response.setCharacterEncoding("UTF8");
  187. response.getWriter().append("error");
  188. }
  189. }
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement