Lucene web 检索错误 search为空(分不多了不好意思)
这个程序是lucene3.0自带的例子。我用另外一个索引程序建立了索引,也就改变了检索程序的索引路径和搜索字段。其他都没有改变,但是检索提示就是searcher 是空(null)。这是是部分主要代码。所有括号有些不完整。麻烦给看看
<%@ page import = " javax.servlet.*, javax.servlet.http.*, java.io.*, org.apache.lucene.analysis.*, org.apache.lucene.analysis.standard.StandardAnalyzer, org.apache.lucene.document.*, org.apache.lucene.index.*, org.apache.lucene.store.*, org.apache.lucene.search.*, org.apache.lucene.queryParser.*, org.apache.lucene.demo.*, org.apache.lucene.demo.html.Entities, java.net.URLEncoder, org.apache.lucene.util.Version" %>
<%!
public String escapeHTML(String s) {
s = s.replaceAll("&", "&");
s = s.replaceAll("<", "<");
s = s.replaceAll(">", ">");
s = s.replaceAll("\"", """);
s = s.replaceAll("'", "'");
return s;
}
%>
<%@include file="header.jsp"%>
<%
boolean error = false;
String indexName = "D:\workspace\lucnentest\dbindex";
IndexSearcher searcher = null;
Query query = null;
TopDocs hits = null;
int startindex = 0;
int maxpage = 50;
String queryString = null;
String startVal = null;
String maxresults = null;
int thispage = 0;
try {
IndexReader reader = IndexReader.open(FSDirectory.open(new File(indexName)), true);
searcher = new IndexSearcher(reader);
}
catch (Exception e)
{
%>
<p>ERROR opening the Index - contact sysadmin!</p>
<p>Error message: <%=escapeHTML(e.getMessage())%></p>
<% error = true;
}
%>
<%
if (error == false) {
queryString = request.getParameter("query");
startVal = request.getParameter("startat");
maxresults = request.getParameter("maxresults");
try {
maxpage = Integer.parseInt(maxresults);
startindex = Integer.parseInt(startVal);
}
catch (Exception e) { }
if (queryString == null)
throw new ServletException("no query "+ "specified");
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);
try {
QueryParser qp = new QueryParser(Version.LUCENE_CURRENT, "title", analyzer);
query = qp.parse(queryString); //parse the
}
catch (ParseException e) {
%>
<p>Error while parsing query: <%=escapeHTML(e.getMessage())%></p>
<%
error = true;
}
}
%>
<%
if (error == false && searcher != null) {
%>
<p>I'm sorry the search is null. </p>
<%
thispage = maxpage;
hits = searcher.search(query, maxpage);
if (hits.totalHits == 0) {
%>
<p> I'm sorry I couldn't find what you were looking for. </p>
<%
error = true;
}
}
[解决办法]
你在D:\workspace\lucnentest\dbindex目录下看看有无索引文件,或者缺失
打开文件错了
[解决办法]
如果索引目录不存在应该会抛出空指针错误。
可能是索引中不存在匹配的内容