Java Servlet和Lucene搜索:提交响应后无法转发
我知道这个错误已经讨论过好几次了,我已经阅读了其中的大部分,但我的问题仍然存在。我不知道该怎么办 我想在lucene索引中进行索引搜索,并在jsp文件中返回结果。 它对一个结果有效,但当我使用Java Servlet和Lucene搜索:提交响应后无法转发,java,jsp,servlets,lucene,Java,Jsp,Servlets,Lucene,我知道这个错误已经讨论过好几次了,我已经阅读了其中的大部分,但我的问题仍然存在。我不知道该怎么办 我想在lucene索引中进行索引搜索,并在jsp文件中返回结果。 它对一个结果有效,但当我使用for循环来获取所有结果时,它会给出错误(在提交响应后无法转发) 这是我的servlet: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOEx
for
循环来获取所有结果时,它会给出错误(在提交响应后无法转发)
这是我的servlet:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String queryfield = request.getParameter("query");
StandardAnalyzer analyzer = new StandardAnalyzer();
FSDirectory index = FSDirectory.open(Paths.get("F:\\temp\\index.lucene"));
int hitsPerPage = 10;
String[] fields = new String[]{"Title","Body"};
MultiFieldQueryParser parser = new MultiFieldQueryParser(fields, analyzer);
parser.setDefaultOperator(Operator.AND);
Query q;
try {
q = parser.parse(queryfield);
IndexReader reader = DirectoryReader.open(index);
IndexSearcher searcher = new IndexSearcher(reader);
TopDocs docs = searcher.search(q, hitsPerPage);
ScoreDoc[] hits = docs.scoreDocs;
ArrayList<result> t = new ArrayList<result>();
for(int i=0;i<hits.length;++i){
int docId = hits[i].doc;
Document d = searcher.doc(docId);
result r = new result();
r.title = d.get("Title");
r.url = d.get("URL");
r.body = d.get("Body");
t.add(r);
request.setAttribute("Results",t);
getServletConfig().getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);
}
return;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
字符串queryfield=request.getParameter(“查询”);
StandardAnalyzer=新的StandardAnalyzer();
FSDirectory index=FSDirectory.open(path.get(“F:\\temp\\index.lucene”);
int hitsPerPage=10;
字符串[]字段=新字符串[]{“标题”,“正文”};
MultiFieldQueryParser解析器=新的MultiFieldQueryParser(字段,分析器);
解析器.setDefaultOperator(运算符.AND);
查询q;
试一试{
q=parser.parse(queryfield);
IndexReader=DirectoryReader.open(索引);
IndexSearcher search=新的IndexSearcher(阅读器);
TopDocs=searcher.search(q,hitsPerPage);
ScoreDoc[]点击次数=docs.scoreDocs;
ArrayList t=新的ArrayList();
对于(inti=0;我在jsp页面中有会话检查吗?@BirhanNega不,我没有。我应该把getServletConfig().getServletContext().getRequestDispatcher(“/index.jsp”).forward(请求,响应);
从循环中退出(即在返回命令之前)@JozefChocholacek谢谢。我再也没有错误了。但是我在用jsp显示我的arraylist时遇到了问题!为此,我想我应该问一个新问题!