package ctbrec.docs; import java.io.FileNotFoundException; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.json.JSONArray; public class SearchServlet extends AbstractDocServlet { private static final String Q = "term"; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { if(req.getParameter(Q) == null) { error(resp, HttpServletResponse.SC_BAD_REQUEST, "Parameter \""+Q+"\" is missing"); return; } resp.setStatus(HttpServletResponse.SC_OK); resp.setContentType("application/json"); JSONArray result = new JSONArray(); List pages = getPages(); String q = req.getParameter(Q).toLowerCase(); String[] tokens = q.split("\\s+"); for (String page : pages) { try { String content = loadMarkdown("/docs/" + page).toLowerCase(); boolean allFound = true; for (String token : tokens) { if(!content.contains(token)) { allFound = false; } } if(allFound) { result.put(page); } } catch(FileNotFoundException e) { // virtual page like index.md -> ignore } } resp.getWriter().println(result.toString()); } }