Java的新项目学成在线笔记-day11(七)

4.3 API 

[AppleScript] 纯文本查看 复制代码

?

1

@Api(value = "课程搜索",description = "课程搜索",tags = {"课程搜索"}) public interface EsCourseControllerApi {       @ApiOperation("课程搜索")     public QueryResponseResult<CoursePub> list(int page,int size,                        CourseSearchParam courseSearchParam) throws IOException;   }


4.4 Service 
Service方法代码复杂,这里分三步完成。 4.4.1 按关键字搜索 
1)在appliction.yml中配置source_field
 

[AppleScript] 纯文本查看 复制代码

?

1

2

3

4

5

6

elasticsearch: 

 hostlist: 127.0.0.1:9200 #多个结点中间用逗号分隔

  course:  

  index: xc_course

    type: doc  

  source_field:  id,name,grade,mt,st,charge,valid,pic,qq,price,price_old,status,studymodel,teachmode,expires,pub_ time,start_time,end_time


2)service完整代码如下 

[AppleScript] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

@Service public class EsCourseService {  

  private static final Logger LOGGER = LoggerFactory.getLogger(EsCourseService.class);   

   @Value("${xuecheng.elasticsearch.course.index}") 

   private String es_index;

    @Value("${xuecheng.elasticsearch.course.type}")  

  private String es_type;  

  @Value("${xuecheng.elasticsearch.course.source_field}")   

 private String source_field;    

  @Autowired   

 RestHighLevelClient restHighLevelClient; 

    public QueryResponseResult<CoursePub> list(int page,int size,CourseSearchParam

 

[AppleScript] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

courseSearchParam)  {  

        //设置索引     

   SearchRequest searchRequest = new SearchRequest(es_index)

       //设置类型       

 searchRequest.types(es_type);   

     SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();  

      BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();   

     //source源字段过虑     

   String[] source_fields = source_field.split(",");   

     searchSourceBuilder.fetchSource(source_fields, new String[]{});    

    //关键字     

   if(StringUtils.isNotEmpty(courseSearchParam.getKeyword())){     

       //匹配关键字        

    MultiMatchQueryBuilder multiMatchQueryBuilder =  QueryBuilders.multiMatchQuery(courseSearchParam.getKeyword(), "name",  "teachplan","description");             //设置匹配占比   

         multiMatchQueryBuilder.minimumShouldMatch("70%");   

         //提升另个字段的Boost值       

     multiMatchQueryBuilder.field("name",10);        

    boolQueryBuilder.must(multiMatchQueryBuilder);     

   }           

      //布尔查询   

     searchSourceBuilder.query(boolQueryBuilder);     

     //请求搜索    

    searchRequest.source(searchSourceBuilder);  

      SearchResponse searchResponse = null;   

     try {         

   searchResponse = restHighLevelClient.search(searchRequest);   

     } catch (IOException e) {    

        e.printStackTrace();      

      LOGGER.error("xuecheng search error..{}",e.getMessage())

           return new QueryResponseResult(CommonCode.SUCCESS,new QueryResult<CoursePub>());     

   }      

    //结果集处理   

     SearchHits hits = searchResponse.getHits();    

    SearchHit[] searchHits = hits.getHits();  

      //记录总数     

   long totalHits = hits.getTotalHits()

       //数据列表      

  List<CoursePub> list = new ArrayList<>();  

        for (SearchHit hit : searchHits) {       

     CoursePub coursePub = new CoursePub()

             //取出source             Map<String, Object> sourceAsMap = hit.getSourceAsMap()

            //取出名称

 

[AppleScript] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

String name = (String) sourceAsMap.get("name");    

       coursePub.setName(name);     

      //图片      

     String pic = (String) sourceAsMap.get("pic");     

      coursePub.setPic(pic);        

   //价格      

     Float price = null;    

       try {       

        if(sourceAsMap.get("price")!=null ){  

                 price = Float.parseFloat((String) sourceAsMap.get("price"));      

         }          

   } catch (Exception e) {      

         e.printStackTrace();        

   }         

  coursePub.setPrice(price);  

         Float price_old = null;      

     try { 

              if(sourceAsMap.get("price_old")!=null ){         

          price_old = Float.parseFloat((String) sourceAsMap.get("price_old"));     

          }     

      } catch (Exception e) {            

   e.printStackTrace();       

    }          

 coursePub.setPrice_old(price_old);         

    list.add(coursePub);  

       }     

  QueryResult<CoursePub> queryResult = new QueryResult<>();  

     queryResult.setList(list);       

queryResult.setTotal(totalHits);    

   QueryResponseResult<CoursePub> coursePubQueryResponseResult = new  QueryResponseResult<CoursePub>(CommonCode.SUCCESS,queryResult);         return coursePubQueryResponseResult; 

  }   }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过融合先进技术,如物联网、大数据、人工智能等,实现校园的智能化管理与服务。政策的推动和技术的成熟为智慧校园的发展提供了基础。该方案强调了数据的重要性,提出通过数据的整合、开放和共享,构建产学研资用联动的服务体系,以促进校园的精细化治理。 智慧校园的核心建设任务包括数据标准体系和应用标准体系的建设,以及信息化安全与等级保护的实施。方案提出了一站式服务大厅和移动校园的概念,通过整合校内外资源,实现资源共享平台和产教融合就业平台的建设。此外,校园大脑的构建是实现智慧校园的关键,它涉及到数据中心化、数据资产化和数据业务化,以数据驱动业务自动化和智能化。 技术应用方面,方案提出了物联网平台、5G网络、人工智能平台等技术的融合应用,以打造多场景融合的智慧校园大脑。这包括智慧教室、智慧实验室、智慧图书馆、智慧党建等多领域的智能化应用,旨在提升教学、科研、管理和服务的效率和质量。 在实施层面,智慧校园建设需要统筹规划和分步实施,确保项目的可行性和有效性。方案提出了主题梳理、场景梳理和数据梳理的方法,以及现有技术支持和项目分级的考虑,以指导智慧校园的建设。 最后,智慧校园建设的成功依赖于开放、协同和融合的组织建设。通过战略咨询、分步实施、生态建设和短板补充,可以构建符合学校特色的生态链,实现智慧校园的长远发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值