| 0 | 1 <% | 
|  | 2 package global.web.tools; | 
|  | 3 | 
|  | 4 import java.io.IOException; | 
|  | 5 import java.io.PrintWriter; | 
|  | 6 import javax.servlet.http.HttpServlet; | 
|  | 7 import javax.servlet.http.HttpServletRequest; | 
|  | 8 import javax.servlet.http.HttpServletResponse; | 
|  | 9 import org.slf4j.Logger; | 
|  | 10 import org.slf4j.LoggerFactory; | 
|  | 11 import org.apache.lucene.queryParser.QueryParser; | 
|  | 12 import org.apache.lucene.queryParser.ParseException; | 
|  | 13 import org.apache.lucene.search.IndexSearcher; | 
|  | 14 import org.apache.lucene.search.Query; | 
|  | 15 import org.apache.lucene.search.TopDocs; | 
|  | 16 import org.apache.lucene.search.ScoreDoc; | 
|  | 17 import org.apache.lucene.util.Version; | 
|  | 18 import nabble.view.lib.Jtp; | 
|  | 19 import global.Site; | 
|  | 20 | 
|  | 21 | 
|  | 22 public final class Search extends HttpServlet { | 
|  | 23 	private static final Logger logger = LoggerFactory.getLogger(Search.class); | 
|  | 24 | 
|  | 25 	protected void service(HttpServletRequest request,HttpServletResponse response) | 
|  | 26 		throws IOException | 
|  | 27 	{ | 
|  | 28 		PrintWriter out = response.getWriter(); | 
|  | 29 		String query = request.getParameter("query"); | 
|  | 30 		IndexSearcher searcher; | 
|  | 31 		Query q; | 
|  | 32 		TopDocs hits; | 
|  | 33 		try { | 
|  | 34 			searcher = new IndexSearcher(Site.dir()); | 
|  | 35 			QueryParser parser = new QueryParser(Version.LUCENE_CURRENT,Site.SUBJECT_FLD,Site.analyzer); | 
|  | 36 			parser.setDefaultOperator(QueryParser.AND_OPERATOR); | 
|  | 37 			q = parser.parse(query); | 
|  | 38 			hits = searcher.search(q,100); | 
|  | 39 		} catch(IOException e) { | 
|  | 40 			throw new RuntimeException(e); | 
|  | 41 		} catch(ParseException e) { | 
|  | 42 			throw new RuntimeException(e); | 
|  | 43 		} | 
|  | 44 		try { | 
|  | 45 			%> | 
|  | 46 			<html> | 
|  | 47 				<head> | 
|  | 48 					<title>Nabble Search Result</title> | 
|  | 49 				</head> | 
|  | 50 				<body> | 
|  | 51 					<h1>Nabble Search for: <%=q%></h1> | 
|  | 52 					<h3>showing <%=hits.scoreDocs.length%> out of <%=hits.totalHits%> results</h3> | 
|  | 53 					<% | 
|  | 54 					for( ScoreDoc sd : hits.scoreDocs ) { | 
|  | 55 						Site site = new Site( searcher.doc(sd.doc) ); | 
|  | 56 						%> | 
|  | 57 						<p><%=site.link()%></p> | 
|  | 58 						<% | 
|  | 59 					} | 
|  | 60 					%> | 
|  | 61 				</body> | 
|  | 62 			</html> | 
|  | 63 			<% | 
|  | 64 		} finally { | 
|  | 65 			searcher.close(); | 
|  | 66 		} | 
|  | 67 	} | 
|  | 68 | 
|  | 69 } | 
|  | 70 %> |