Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Servlet和Lucene搜索:提交响应后无法转发_Java_Jsp_Servlets_Lucene - Fatal编程技术网

Java Servlet和Lucene搜索:提交响应后无法转发

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

我知道这个错误已经讨论过好几次了,我已经阅读了其中的大部分,但我的问题仍然存在。我不知道该怎么办

我想在lucene索引中进行索引搜索,并在jsp文件中返回结果。 它对一个结果有效,但当我使用
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时遇到了问题!为此,我想我应该问一个新问题!