Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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
从JSP中的外部JAR文件导入类_Jsp_Lucene - Fatal编程技术网

从JSP中的外部JAR文件导入类

从JSP中的外部JAR文件导入类,jsp,lucene,Jsp,Lucene,为了在Lucene索引中搜索,我通过JSP中的Web用户界面捕获了一个用户的查询。在JSP中,我编写了简短的JAVA代码来解析查询,并调用Lucene索引搜索器来搜索查询。但问题是,它反复给出编译错误,如“查询无法解决,多字段QueryParser无法解决…”。所以没有一个Lucene类得到解决。代码如下: 文件名:result.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding=

为了在Lucene索引中搜索,我通过JSP中的Web用户界面捕获了一个用户的查询。在JSP中,我编写了简短的JAVA代码来解析查询,并调用Lucene索引搜索器来搜索查询。但问题是,它反复给出编译错误,如“查询无法解决,多字段QueryParser无法解决…”。所以没有一个Lucene类得到解决。代码如下:

文件名:result.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*,java.io.*,org.apache.lucene.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%! String query; %>
<%
    query=request.getParameter("myQuery");
%>
<form name="frm" method="post" action="result.jsp">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="22%">&nbsp;</td>
<td width="78%">&nbsp;</td>
</tr>
<tr>
<td>&nbsp; </td>
<td><input type="text" name="myQuery" placeholder="Type here"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="submit" value="Submit"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</form>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
  Directory dir=new FSDirectory.open(new File(path of index directory));
  QueryParser parser=new MultiFieldQueryParser(Version.LUCENE_30, new String[] 
  {"title","address","city"},new BooleanClause.Occur[]{BooleanClause.Occur.MUST,
  BooleanClause.Occur.SHOULD, BooleanCaluse.Occur.SHOULD},new StandardAnalyzer());
  Query query=parser.parse(query);
  IndexSearcher searcher=new Indexsearcher(dir,true);
  TopDocs hits=searcher.search(query,20);
  searcher.close();
  dir.close();
%>
<p>Query phrase is : <%=query%></p>
</body>
</html>

在此处插入标题
查询短语为:


我无法理解为什么在导入上面的Lucene之后,Lucene的任何类都没有得到解决。所以我问是否有人能帮我修复上面的代码。谢谢。

经验法则:导入abc.xyz.*只会导入包abc.xyz中的所有类,而不会导入包abc.xyz.ijk中的类

例如:“org.apache.lucene.*”将不会导入“org.apache.lucene.store.Directory”

要解决上述错误,请导入以下包/类

1) “org.apache.lucene.store.Directory”或“org.apache.lucene.store.*”

2) “org.apache.lucene.queryParser.queryParser”

3) “org.apache.lucene.queryParser.multifiedqueryparser”

4) “org.apache.lucene.search.BooleanClause”

5) “org.apache.lucene.analysis.standard.StandardAnalyzer”

6) org.apache.lucene.search.TopDocs

7) org.apache.lucene.search.indexsearch

我可能错过了一两节课。只需遵循“经验法则”,并使用完整的包名导入缺少的类

顺便说一句,,即JSP中的直接Java代码。这是一个糟糕的方法


您可以找到其他资源来更好地理解它。

我知道不应该在JSP中使用scriptlet。许多人建议使用JSTL而不是Scriptlet。但在上述情况下,我不知道如何使用JSTL来避免scriptlet。因此,我想问是否有人能提出一个处理这个问题的想法。谢谢你。@Joy,那是另一个问题。在你的问题中发布另一个问题,你肯定会在评论中得到比这里更好、更全面的答案。欢迎,让我知道上述答案是否解决了问题中指定的初始问题。可能的副本