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)
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)
先说一下
如果不设置高亮则能检索出来结果来
如果设置高亮后就报了 以上的错误。。
/**
* 检索结果排序
* @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;
}
配置文件的设置如下 用的是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>