Mercurial Hosting > nabble
comparison src/global/web/tools/Search.java @ 0:7ecd1a4ef557
add content
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 21 Mar 2019 19:15:52 -0600 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:7ecd1a4ef557 |
---|---|
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 out.print( "\r\n<html>\r\n <head>\r\n <title>Nabble Search Result</title>\r\n </head>\r\n <body>\r\n <h1>Nabble Search for: " ); | |
47 out.print( (q) ); | |
48 out.print( "</h1>\r\n <h3>showing " ); | |
49 out.print( (hits.scoreDocs.length) ); | |
50 out.print( " out of " ); | |
51 out.print( (hits.totalHits) ); | |
52 out.print( " results</h3>\r\n " ); | |
53 | |
54 for( ScoreDoc sd : hits.scoreDocs ) { | |
55 Site site = new Site( searcher.doc(sd.doc) ); | |
56 | |
57 out.print( "\r\n<p>" ); | |
58 out.print( (site.link()) ); | |
59 out.print( "</p>\r\n" ); | |
60 | |
61 } | |
62 | |
63 out.print( "\r\n</body>\r\n</html>\r\n" ); | |
64 | |
65 } finally { | |
66 searcher.close(); | |
67 } | |
68 } | |
69 | |
70 } | |
71 |