Struts Problem Report
Struts has detected an unhandled exception: Messages: org.apache.lucene.search.highlight.Scorer 
org/apache/lucene/search/highlight/Scorer 
 
Stacktraces
java.lang.reflect.InvocationTargetException 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(
java.lang.ClassNotFoundException: org.apache.lucene.search.highlight.Scorer 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)

解决方案 »

  1.   

    索引是随着启动生成的 没有问题
    先说一下
     如果不设置高亮则能检索出来结果来  
    如果设置高亮后就报了 以上的错误。。
    /**
     * 检索结果排序
     * @param pager
     * @return
     */
    public Pager search(Pager pager) {


    //开始时间
    Date startTime=new Date();

    //从模板对象获得
    Compass compass = compassTemplate.getCompass();
    //打开session会话
    CompassSession compassSession = compass.openSession();
    //用session建立一个查询
    CompassQueryBuilder compassQueryBuilder = compassSession.queryBuilder();
    CompassBooleanQueryBuilder compassBooleanQueryBuilder = compassQueryBuilder.bool();
    //得到查询结果(只在适用范围中检索)
    CompassQuery compassQuery = compassBooleanQueryBuilder.addMust(compassQueryBuilder.queryString("a010:*" + pager.getKeyword() + "*").toQuery()).toQuery();
    // 根据实施日期排序<默认是升序>(降序)
    compassQuery.addSort("a205", SortPropertyType.STRING, SortDirection.REVERSE);
    //返回hits的结果集
    CompassHits compassHits = compassQuery.hits();
    List<Standard> standardList = new ArrayList<Standard>();


    //     CompassHits hits=compassSession.find(pager.getKeyword());
    // for (int i = 0; i < hits.getLength(); i++) {
    // Standard standard = (Standard) compassHits.data(i);
    // System.out.println("*****8开始设置高亮、、。。");
    // //设置高亮--索引的字段
    // String h = hits.highlighter(i).fragment("a010");
    //       if (h != null) {
    //        standard.setA010(h);
    //    }
    // standardList.add(standard);
    // }
    int firstResult = (pager.getPageNumber() - 1) * pager.getPageSize();
    int maxReasults = pager.getPageSize();
    int totalCount = compassHits.length();
    int end = Math.min(totalCount, firstResult + maxReasults);
    for (int i = firstResult; i < end; i++) {
    Standard standard = (Standard) compassHits.data(i);
    System.out.println("开始设置高亮、、。。");
    // 设置高亮--索引的字段
    String h = compassHits.highlighter(i).fragment("a010");
    System.out.println(h+"....开始设置高亮、、。。");
          if (h != null) {
           standard.setA010(h);
       }
    standardList.add(standard);
    }
    compassSession.close();
    pager.setList(standardList);
    pager.setTotalCount(totalCount);
    //结束时间
    Date endTime=new Date();
    System.out.println("搜索用时:"+(endTime.getTime()-startTime.getTime())+"毫秒");
    return pager;
    }
      

  2.   


    配置文件的设置如下 用的是ik分词器<!--compass的一些属性设置  -->
    <property name="compassSettings">
    <props>
    <!-- 设置Compass的事务从Spring的事务管理器获取事务,,使其与Hibernate的事务是同一事务 -->
    <prop key="compass.transaction.factory">org.compass.spring.transaction.SpringSyncTransactionFactory</prop>
    <!-- 将默认分词(一元分词)改为 IKAnalyzer分词(基于字典分词) -->
    <prop key="compass.engine.analyzer.default.type">org.wltea.analyzer.lucene.IKAnalyzer</prop>
    [color=#FF0000]<!-- 设置搜索关键字高亮显示 -->
    <prop key="compass.engine.highlighter.default.formatter.simple.pre"><![CDATA[<font color="red"><b>]]></prop>
    <prop key="compass.engine.highlighter.default.formatter.simple.post"><![CDATA[</b></font>]]>[/
    color]</prop>
    </props>
    </property>
      

  3.   

    在线等高人来解答啊。。 我查过网上说 少 lucene-memory-3.0.2.jar 我也down下来加载进去了  还是报那个错误 求解答啊