No older revisions available
No older revisions available
~java
<%@ page language="java"
import="java.util.*, java.io.BufferedReader, java.io.InputStreamReader, java.io.FileReader,
java.io.IOException, java.util.Date,
org.apache.lucene.analysis.Analyzer,
org.apache.lucene.analysis.standard.StandardAnalyzer,
org.apache.lucene.document.Document,
org.apache.lucene.index.IndexReader,
org.apache.lucene.index.FilterIndexReader,
org.apache.lucene.search.Searcher,
org.apache.lucene.search.IndexSearcher,
org.apache.lucene.search.Query,
org.apache.lucene.search.Hits,
org.apache.lucene.queryParser.QueryParser
"
pageEncoding="UTF-8"%>
<%
out.write("<form method=post action=SearchAgency.jsp>");
out.write(" 검색할 키워드를 입력하세요 <br>");
out.write(" <input type=text name='keyword'>");
out.write(" </form>");
class OneNormsReader extends FilterIndexReader {
private String field;
public OneNormsReader(IndexReader in, String field) {
super(in);
this.field = field;
}
public byte[] norms(String field) throws IOException {
return in.norms(this.field);
}
}
// String index = "/home/httpd/index";
String index = "index";
String field = "contents";
String queries = null;
int repeat = 0;
boolean raw = false;
String normsField = null;
IndexReader reader = IndexReader.open(index);
if (normsField != null)
reader = new OneNormsReader(reader, normsField);
Searcher searcher = new IndexSearcher(reader);
Analyzer analyzer = new StandardAnalyzer();
BufferedReader in = null;
if (queries != null) {
in = new BufferedReader(new FileReader(queries));
} else {
in = new BufferedReader(new InputStreamReader(System.in));
}
System.out.print("Query: ");
request.setCharacterEncoding("UTF-8");
String line = request.getParameter("keyword");
if(line!=null)
{
out.println(line);
Query query = QueryParser.parse(line+"*", field, analyzer);
out.println("Searching for: " + query.toString(field));
Hits hits = searcher.search(query);
if (repeat > 0) { // repeat & time as benchmark
Date start = new Date();
for (int i = 0; i < repeat; i++) {
hits = searcher.search(query);
}
Date end = new Date();
out.println("Time: "+(end.getTime()-start.getTime())+"ms");
}
out.println(hits.length() + " total matching documents");
final int HITS_PER_PAGE = 10;
for (int start = 0; start < hits.length(); start += HITS_PER_PAGE) {
int end = Math.min(hits.length(), start + HITS_PER_PAGE);
for (int i = start; i < end; i++) {
if (raw) { // output raw format
out.println("doc="+hits.id(i)+" score="+hits.score(i));
continue;
}
Document doc = hits.doc(i);
String path = doc.get("path");
if (path != null) {
out.println((i+1) + ". " + path);
String title = doc.get("title");
if (title != null) {
out.println(" Title: " + doc.get("title"));
}
} else {
out.println((i+1) + ". " + "No path for this document");
}
}
if (queries != null) // non-interactive
break;
if (hits.length() > end) {
out.print("more (y/n) ? ");
line = in.readLine();
if (line.length() == 0 || line.charAt(0) == 'n')
break;
}
}
reader.close();
}
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'SearchAgency.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
This is my JSP page.aaa <br>
</body>
</html>