搜索用时:31毫秒
共检索到33条数据
搜索用时:47毫秒
共检索到10条数据
搜索用时:0毫秒
共检索到1条数据
搜索用时:0毫秒
共检索到1条数据
2011-10-12 13:24:49 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet default threw exception
java.lang.IllegalStateException: Already value [org.springframework.orm.hibernate3.SessionHolder@1973562] for key [org.hibernate.impl.SessionFactoryImpl@1aff6b1] bound to thread [http-8899-5]
at org.springframework.transaction.support.TransactionSynchronizationManager.bindResource(TransactionSynchronizationManager.java:182)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:183)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
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:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)以上是 错误信息, 当我检索一些关键词时 没有问题 ,但是输入其他的关键词时会以上的错误。

解决方案 »

  1.   

    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()) 
    // .addShould(compassQueryBuilder.term("a100",pager.getKeyword()))
    // .addShould(compassQueryBuilder.term("a298",pager.getKeyword()))
    // .addShould(compassQueryBuilder.term("a010",pager.getKeyword()))
    // .toQuery();
    //查询所有的属性中匹配的
    CompassQuery compassQuery=compassQueryBuilder.queryString(pager.getKeyword()).toQuery();

    // 根据实施日期排序<默认是升序>(降序)
    compassQuery.addSort("a205", SortPropertyType.STRING, SortDirection.REVERSE);
    //返回hits的结果集
    CompassHits compassHits = compassQuery.hits();
    List<Standard> standardList = new ArrayList<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);
    //设置高亮--索引的字段
    // String h = compassHits.highlighter(i).fragment("a010");

    //自动选择正文中最匹配关键字的内容中的一部分输出
    String h = compassHits.highlighter(i).setTextTokenizer( 
    CompassHighlighter.TextTokenizer.AUTO) 
    .fragment("a010"); 
    //------------------------------------------------------------
    //自动选择正文中最匹配关键字的内容中的一部分输出
    String h2 = compassHits.highlighter(i).setTextTokenizer( 
    CompassHighlighter.TextTokenizer.AUTO) 
    .fragment("a100"); 

    //自动选择正文中最匹配关键字的内容中的一部分输出
    String h1 = compassHits.highlighter(i).setTextTokenizer( 
    CompassHighlighter.TextTokenizer.AUTO) 
    .fragment("a298"); 



    // System.out.println("....开始设置高亮、、。。"+h);
          if (h != null) {
           standard.setA010(h);
          }
          if (h1 != null) {
           standard.setA298(h1);
          }
          if (h2 != null) {
           standard.setA100(h2);
          }
    standardList.add(standard);
    }
    compassSession.close();
    pager.setList(standardList);
    pager.setTotalCount(totalCount);
    //结束时间
    Date endTime=new Date();
    System.out.println("搜索用时:"+(endTime.getTime()-startTime.getTime())+"毫秒");
    System.out.println("共检索到"+totalCount+"条数据");
    return pager;
    }