search函数返回一个二维数组,出错提示如下:org.apache.jasper.JasperException: An exception occurred processing JSP page /result.jsp at line 256253: out.println("</p>");
254:
255: ExtractDigest testResult=new ExtractDigest(); //鎼滅储鏂囨。
256: String[][] str=testResult.search("contents","it");
257:
258: out.print(str.length);
259: /*out.print("<p class=rf>鎼滅储缁撴灉锛�/p>");
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:515)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:408)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause javax.servlet.ServletException: java.lang.OutOfMemoryError: Java heap space
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:855)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:784)
org.apache.jsp.result_jsp._jspService(result_jsp.java:364)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause java.lang.OutOfMemoryError: Java heap space
net.teamhot.thesaurus.TreeNode.<init>(TreeNode.java:46)
net.teamhot.thesaurus.WordTree.addChineseWord(WordTree.java:75)
net.teamhot.thesaurus.WordTreeFactory.buildChineseWordTree(WordTreeFactory.java:63)
net.teamhot.thesaurus.WordTreeFactory.getInstance(WordTreeFactory.java:43)
net.teamhot.lucene.ThesaurusTokenizer.next(ThesaurusTokenizer.java:82)
org.apache.lucene.queryParser.QueryParser.getFieldQuery(QueryParser.java:437)
org.apache.lucene.queryParser.QueryParser.Term(QueryParser.java:1092)
org.apache.lucene.queryParser.QueryParser.Clause(QueryParser.java:979)
org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:907)
org.apache.lucene.queryParser.QueryParser.TopLevelQuery(QueryParser.java:896)
org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:146)
luence.ExtractDigest.search(ExtractDigest.java:55)
org.apache.jsp.result_jsp._jspService(result_jsp.java:321)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
254:
255: ExtractDigest testResult=new ExtractDigest(); //鎼滅储鏂囨。
256: String[][] str=testResult.search("contents","it");
257:
258: out.print(str.length);
259: /*out.print("<p class=rf>鎼滅储缁撴灉锛�/p>");
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:515)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:408)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause javax.servlet.ServletException: java.lang.OutOfMemoryError: Java heap space
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:855)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:784)
org.apache.jsp.result_jsp._jspService(result_jsp.java:364)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause java.lang.OutOfMemoryError: Java heap space
net.teamhot.thesaurus.TreeNode.<init>(TreeNode.java:46)
net.teamhot.thesaurus.WordTree.addChineseWord(WordTree.java:75)
net.teamhot.thesaurus.WordTreeFactory.buildChineseWordTree(WordTreeFactory.java:63)
net.teamhot.thesaurus.WordTreeFactory.getInstance(WordTreeFactory.java:43)
net.teamhot.lucene.ThesaurusTokenizer.next(ThesaurusTokenizer.java:82)
org.apache.lucene.queryParser.QueryParser.getFieldQuery(QueryParser.java:437)
org.apache.lucene.queryParser.QueryParser.Term(QueryParser.java:1092)
org.apache.lucene.queryParser.QueryParser.Clause(QueryParser.java:979)
org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:907)
org.apache.lucene.queryParser.QueryParser.TopLevelQuery(QueryParser.java:896)
org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:146)
luence.ExtractDigest.search(ExtractDigest.java:55)
org.apache.jsp.result_jsp._jspService(result_jsp.java:321)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
public String[][] search(String keyword) throws CorruptIndexException, IOException, ParseException{
String[][] str = new String[100][3];
int hlh=100;
searcher = new IndexSearcher(indexPath);
QueryParser queryParse = new QueryParser("contents", analyzer);
Query query = queryParse.parse(keyword);
Hits hits = searcher.search(query);
if(hits.length()==0) {
System.out.print("找不到");
str[0][1]="对不起,找不到你";
return str;
}
if(hits.length()<100) hlh=hits.length();
for(int i=0;i<hlh;i++){
System.out.println("length="+hits.length());
Document doc = hits.doc(i);
String text = doc.get("contents");
//System.out.println("||||||||||||"+text);
int htmlLength = prefixHTML.length()+suffixHTML.length();
System.out.println("高亮HTML的总长度为"+htmlLength);
SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter(prefixHTML, suffixHTML);
Highlighter highlighter = new Highlighter(simpleHTMLFormatter,new QueryScorer(query));
String highLightText = highlighter.getBestFragment(analyzer,"contents",text);
//System.out.println("★高亮显示第 "+(i+1) +" 条检索结果如下所示:");
// System.out.println("highLightText="+highLightText);
// System.out.print(doc.get("path"));
str[i][1]=doc.get("path");
str[i][1]=str[i][1].substring(13,str[i][1].length());
str[i][1]=str[i][1].substring(0,str[i][1].lastIndexOf("."))+".pdf";
str[i][2]=highLightText;
// System.out.println("显示第 "+(i+1) +" 条检索结果摘要的长度为(含高亮HTML代码):"+highLightText.length());
}
searcher.close();
for(int i=0;i<str.length;i++) {
System.out.println("[1]="+str[i][1]);
System.out.println("[2]="+str[i][2]);
}
return str;
}
不如用hashmap