会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 133650个问题
JAVA 全系列/第十一阶段:分布式RPC调用和分布式文件存储/FastDFS 27709楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 27710楼

老师,出现了一个这样的异常:

java.lang.IllegalStateException: 无效:会话已无效。

at org.apache.catalina.session.StandardSession.invalidate(StandardSession.java:1217)

at org.apache.catalina.session.StandardSessionFacade.invalidate(StandardSessionFacade.java:170)

at com.bjsxt.web.servlet.UserLoginServlet.doPost(UserLoginServlet.java:49)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at com.bjsxt.web.filter.UserLoginFilter.doFilter(UserLoginFilter.java:34)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.base/java.lang.Thread.run(Thread.java:830)

WebDemo.zip


JAVA 全系列/第六阶段:JavaWeb开发/Web实战案例 27713楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 27714楼
Python 全系列/第十九阶段:数据分析-数据可视化/matplotlib 27715楼
JAVA 全系列/第一阶段:AI驱动的JAVA编程/JAVA入门和背景知识 27716楼

老师我这个查询结果是这样,已经使用了ik分词器,正常应该是华为啊,麻烦老师帮看下

Item{id='20201', title='<em>华</em><em>为</em>荣耀play手机', sellPoint=' 打游戏', price=199900, num=999}

Item{id='20200', title='<em>华</em><em>为</em> p30 手机', sellPoint=' 拍照好', price=399900, num=999}

代码

 @Test
    public void testHighlight(){
        HighlightBuilder.Field field = new HighlightBuilder.Field("title");
        field.preTags("<em>");
        field.postTags("</em>");
        NativeSearchQuery query =
                new NativeSearchQueryBuilder()
                        //分页
                        .withSort(SortBuilders.fieldSort("price").order(SortOrder.ASC))
                        //排序
                        .withPageable(PageRequest.of(0, 2))
                        //搜索条件
                        .withQuery(QueryBuilders.matchQuery("title","华为"))
                        //设置高亮字段
                        .withHighlightFields(field)
                        .build();
        AggregatedPage<Item> pageResult =restTemplate.queryForPage(query, Item.class, new SearchResultMapper() {
           //处理搜索结果,搜索完整结果,也就是那个集合
            //response -就是搜索结果,相当一 kibana 中执行搜索的结果内容
            //clazz -就是返回结果的具体类型
            //pageable -分页处理,就是 queryForPage 方法参数query 中的 pageable 对象
            @Override
            public <T> AggregatedPage<T> mapResults(SearchResponse searchResponse, Class<T> aClass, Pageable pageable) {
                //获取搜索结果数据 相当于在查询结果中的 hits
                SearchHit[] hits =searchResponse.getHits().getHits();
                List<T> resultList = new ArrayList<>();//最终结果集合
                for (SearchHit hit :hits) {
                    //搜索的 source 源
                    Map<String,Object> map=hit.getSourceAsMap();
                    Item item =new Item();
                    item.setId(map.get("id").toString());
                    item.setSellPoint(map.get("sellPoint").toString());
                    item.setPrice(Long.parseLong(map.get("price").toString()));
                    item.setNum(Integer.parseInt(map.get("num").toString()));

                    //高亮数据处理 key-字段名 value-高亮数据结果
                    Map<String , HighlightField> highlightFieldMap=hit.getHighlightFields();
                    HighlightField highlightField = highlightFieldMap.get("title");
                    if (highlightField==null){
                        item.setTitle(map.get("title").toString());
                    }else{//有高亮的 title
                        item.setTitle(highlightField.getFragments()[0].toString());
                    }
                        resultList.add((T)item);
                }

            //返回结果处理
                return new AggregatedPageImpl<T>(resultList,pageable,searchResponse.getHits().getTotalHits());
            }

            //不提供实现,这个是处理每个搜索结果方法
            @Override
            public <T> T mapSearchHit(SearchHit searchHit, Class<T> aClass) {
                return null;
            }
        });
        for (Item item :pageResult.getContent()) {
            System.out.println(item);
        }


    }
}


JAVA 全系列/第十四阶段:全文检索服务/Spring Data For ElasticSearch 27717楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 27718楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637