首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

Lucene web 检索异常 search为空(分不多了不好意思)

2012-02-05 
Lucene web 检索错误 search为空(分不多了不好意思)这个程序是lucene3.0自带的例子。我用另外一个索引程序

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("&", "&amp;");
  s = s.replaceAll("<", "&lt;");
  s = s.replaceAll(">", "&gt;");
  s = s.replaceAll("\"", "&quot;");
  s = s.replaceAll("'", "&apos;");
  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目录下看看有无索引文件,或者缺失

打开文件错了
[解决办法]
如果索引目录不存在应该会抛出空指针错误。
可能是索引中不存在匹配的内容

热点排行