<%@ page contentType="text/plain; charset=UTF-8" pageEncoding="UTF-8" import="javax.servlet.*" import="javax.servlet.http.*" import="java.io.*" import="java.util.*" import="java.net.*" import="net.nutch.html.Entities" import="net.nutch.searcher.*" import="net.nutch.plugin.*" import="net.nutch.util.NutchConf" import="net.nutch.analysis.*" %><% NutchBean bean = NutchBean.get(application); // set the character encoding to use when interpreting request values request.setCharacterEncoding("UTF-8"); bean.LOG.info("query request from " + request.getRemoteAddr()); // get query from request String queryString = request.getParameter("query"); if (queryString == null) queryString = ""; String htmlQueryString = Entities.encode(queryString); int start = 0; // first hit to display String startString = request.getParameter("start"); if (startString != null) start = Integer.parseInt(startString); int hitsPerPage = 10; // number of hits to display String hitsString = request.getParameter("hitsPerPage"); if (hitsString != null) hitsPerPage = Integer.parseInt(hitsString); int hitsPerSite = 2; // max hits per site String hitsPerSiteString = request.getParameter("hitsPerSite"); if (hitsPerSiteString != null) hitsPerSite = Integer.parseInt(hitsPerSiteString); Query query = Query.parse(queryString); bean.LOG.info("query: " + queryString); //String language = ResourceBundle.getBundle("org.nutch.jsp.search", request.getLocale()).getLocale().getLanguage(); String requestURI = HttpUtils.getRequestURL(request).toString(); String base = requestURI.substring(0, requestURI.lastIndexOf('/')); // To prevent the character encoding declared with 'contentType' page // directive from being overriden by JSTL (apache i18n), we freeze it // by flushing the output buffer. // see http://java.sun.com/developer/technicalArticles/Intl/MultilingualJSP/ out.flush(); Hits hits = bean.search(query, start + hitsPerPage, hitsPerSite); int end = (int)Math.min(hits.getLength(), start + hitsPerPage); int length = end-start; int realEnd = (int)Math.min(hits.getLength(), start + hitsPerPage); Hit[] show = hits.getHits(start, realEnd-start); HitDetails[] details = bean.getDetails(show); String[] summaries = bean.getSummary(details, query); bean.LOG.info("total hits: " + hits.getTotal()); if(hitsPerPage>end) hitsPerPage = end; %>"<%=htmlQueryString%>";"<%=hitsPerPage%>";"<%=hits.getTotal()%>" <% // be responsive out.flush(); %><% for (int i = 0; i < length; i++) { Hit hit = show[i]; HitDetails detail = details[i]; String title = detail.getValue("title"); String url = detail.getValue("url"); String summary = summaries[i]; if(title == null || title.equals("")) // use url for docs w/o title title = url; %>"<%=Entities.encode(title)%>";<% if (!"".equals(summary)){ %>"<%=summary%>";"<%=Entities.encode(url)%>"<% } %> <% } %>