import java.io.*;
import org.apache.lucene.search.*;
import org.apache.lucene.index.Term;
import org.apache.lucene.document.*;public class Query { private String INDEX_STORE_PATH = "D:/JEEworkspace/Preprocess/indexes";

private IndexSearcher searcher;

private BooleanQuery query; public String[] getQueryResult(String[] keys) throws IOException{

searcher = new IndexSearcher(INDEX_STORE_PATH);
query = new BooleanQuery();
if(keys == null){
return null;
}
int length = keys.length;
TermQuery[] term = new TermQuery[length]; for(int i = 0; i < length; i++){
term[i] = new TermQuery(new Term("context", keys[i]));
        query.add(term[i], BooleanClause.Occur.MUST);
}
// Sort sort = new Sort(new SortField("score"));
Hits hits = searcher.search(query);

length = hits.length();
String[] result = new String[length];
        for(int i = 0; i < length; i++){
         Document doc = hits.doc(i);
         String tmp = doc.getField("title").stringValue();
         tmp = tmp + "|" + doc.getField("url").stringValue();
         tmp = tmp + "|" + doc.getField("context").stringValue();
         result[i] = tmp;
        }
        
        return result;
        
}
}
然后在页面调用会报如下错误
严重: Servlet.service() for servlet jsp threw exception
java.io.IOException: Unknown format version: -7
at org.apache.lucene.index.SegmentInfos.read(SegmentInfos.java:195)
at org.apache.lucene.index.IndexReader$1.doBody(IndexReader.java:152)
at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:579)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:179)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:131)
at org.apache.lucene.search.IndexSearcher.<init>(IndexSearcher.java:43)
at sina.search.util.Query.getQueryResult(Query.java:18)
at org.apache.jsp.s_jsp._jspService(s_jsp.java:121)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
at java.lang.Thread.run(Thread.java:619)请大家指点下啊·紧急

解决方案 »

  1.   

    经查证是
    searcher = new IndexSearcher(INDEX_STORE_PATH);
     这一句报的错误
    java.io.FileNotFoundException: no segments* file found: files:
    at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:485)
    at org.apache.lucene.index.IndexReader.open(IndexReader.java:179)
    at org.apache.lucene.index.IndexReader.open(IndexReader.java:131)
    at org.apache.lucene.search.IndexSearcher.<init>(IndexSearcher.java:43)
    at sina.search.Test.T3.main(T3.java:11)可是我建立索引后有存在segments文件啊
    高手指点下·
      

  2.   

    看上面的错误是lucene版本不兼容造成的,你查一下你的索引文件和你的程序是不是一个版本的jar