会员版2.0-就业课程搜索102服务_第1页
会员版2.0-就业课程搜索102服务_第2页
会员版2.0-就业课程搜索102服务_第3页
会员版2.0-就业课程搜索102服务_第4页
会员版2.0-就业课程搜索102服务_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学成-第11天-讲义-搜索服课程搜索需求2、根据关键字搜索课程信息,搜索方式为全文检索,关键字需要匹配课程的名称、课程内容4、搜索结点分页显示全文检索技术课程索如何课程索引信息创建课程发布创建课程发布表模在课程管理服务创建模型privateprivateDatetimestamp;//privateString n;//privateStringpubTime;//修改课程发在课程管理服务定义2)修改课程发布////保存Optional<CoursePub>coursePubOptional=//更新时间戳 时SimpleDateFormatSimpleDateFormatsimpleDateFormat=newSimpleDateFormat("YYYY‐MM‐ddStringdate=simpleDateFormat.format(newDate());return}//创建coursePubprivateCoursePubid){CoursePubcoursePub=newCoursePub();//Optional<CourseBase>courseBaseOptional=courseBaseRepository.findById(id);if(courseBaseOptional==null){CourseBasecourseBase=courseBaseOptional.get();BeanUtils.copyProperties(courseBase,}//Optional<CoursePic>picOptional=coursePicRepository.findById(id);CoursePiccoursePic=picOptional.get();BeanUtils.copyProperties(coursePic,coursePub);}//课 信Optional<CourseMarket>marketOptional=courseMarketRepository.findById(id);CourseMarketcourseMarket=marketOptional.get();BeanUtils.copyProperties(courseMarket,coursePub);}// nNode nNode= //将课程计划转成String nString= return}////课程发publicCoursePublishResultpublish(String//创建课程索//创建课程索引信//向数据库保存课程索引搭建ESES 创建索引创建索引创建映Postcourse/doc/map yzer":"ik_max_word", yzer":"ik_smart","type":"users":"index":false,"type":"charge":"type":"valid":"type":"pic":"index":false,"type":"keyword""qq":"index":false,"type":"keyword""price":"type":"price_old":"type":"st":"type":"status":"type":"studymodel"{"type": ode":"type": n": yzer":"ik_max_word", yzer":"ik_smart","type":"expires":"type":"date","format":"yyyy‐MM‐ddHH:mm:ss""pub_time":"type":"date","format":"yyyy‐MM‐ddHH:mm:ss"Logstash是ES下的一款开源软件,它能够同时从多个来源数据、转换数据,然后将数据发送到Eleasticsearch解压安装logstash-input-logstash-input-jdbc是ruby开发的,先ruby并安装地址:安装完成查看是否安装成 下的以 创建模板文 本的xc_course_tem yzer":"ik_max_word", yzer":"ik_smart","type":"text""pic":"index":false,"type":"keyword""price":"type":"price_old":"type":"pub_time":"format":"yyyy‐MM‐ddHH:mm:ss","type":"date""qq":"index":false,"type":"keyword""st":"type":"start_time":"format":"yyyy‐MM‐ddHH:mm:ss","type":"date""status":"type":"studymodel"{"type": ode":"type": n": yzer":"ik_max_word", yzer":"ik_smart","type":"text""users":{"index":false,"type":"valid":"type":}}}配置 参考#定时配#ES的ip地址和口 te #说明ES采用UTC时区,比时间早8小时,所以ES数据时让最后更新时间加8小wheretimestamp>date_add(:sql_last_value,INTERVAL82、osash每个执行完成会在DElsicSacosash-./confilosts_meada记录执行时间下次以此时间为基准进行增量同步数据到索引库。测启动课程搜2、根据关键字搜索课程信息,搜索方式为全文检索,关键字需要匹配课程的名称、课程内容1、根据关键字搜索,采用MultiMatchQuery,搜索name、description、teachn配hostlist:hostlist::9200#多个结点中间用 importimportimportpublicclassElasticsearchConfigprivateStringhostlist;public//解析hostlistString[]split=//创建HttpHost数组,其中存放esHttpHost[]httpHostArray=newHttpHost[split.length];for(inti=0;i<split.length;i++){Stringitem=httpHostArray[i]=newHttpHost(item.split(":")[0],Integer.parseInt(item.split(":")[1]),"http");}//创建 客户returnnew }public//解析hostlistString[]split=//创建HttpHost数组,其中存放esHttpHost[]httpHostArray=newHttpHost[split.length];for(inti=0;i<split.length;i++){Stringitem=httpHostArray[i]=newHttpHost(item.split(":")[0],Integer.parseInt(item.split(":")[1]),"http");}return }}@ApiOperation("@ApiOperation("课程搜索publicQueryResponseResult<CoursePub>list(intpage,intCourseSearchParamcourseSearchParam)throws按关键字搜在appliction.yml中配置hostlist:hostlist::9200#多个结点中间用 service完整代码如;publicQueryResponseResult<CoursePub>list(intpage,intcourseSearchParam)//设置索SearchRequestsearchRequest=new//SearchSourceBuildersearchSourceBuilder=newSearchSourceBuilder();BoolQueryBuilderboolQueryBuilder=QueryBuilders.boolQuery();//source源字段String[]source_fields=source_field.split(",");searchSourceBuilder.fetchSource(source_fields,newString[]{});//关键//匹配关键MultiMatchQueryBuildermultiMatchQueryBuilder=QueryBuilders.multiMatchQuery(courseSearchParam.getKeyword(),"name", //设置匹配占//提升另个字段的Boost}////SearchResponsesearchResponse=null;try{searchResponse= }catch(IOException{;LOGGER.error("xuechengsearchreturnnewQueryResponseResult(CommonCode.SUCCESS,new}//结果集处SearchHitshits=searchResponse.getHits();SearchHit[]searchHits=hits.getHits();//记录总longtotalHits=//数据列List<CoursePub>list=newfor(SearchHithit:{CoursePubcoursePub=new//取出Map<String,Object>sourceAsMap=//取出名Stringname=(String)sourceAsMap.get("name");Stringname=(String)sourceAsMap.get("name");Stringpic=(String)sourceAsMap.get("pic");//Floatprice=null;try{if(sourceAsMap.get("price")!=nullprice=Float.parseFloat((String)}}catch(Exception{}Floatprice_old=null;try{if(sourceAsMap.get("price_old")!=nullprice_old=Float.parseFloat((String)}}catch(Exception{}}QueryResult<CoursePub>queryResult=newQueryResult<>();QueryResponseResult<CoursePub>coursePubQueryResponseResult=newreturn}按分类和难度等级搜按分类和难度等级搜索代码如下privateStringsource_field; publicQueryResponseResult<CoursePub>list(intpage,intsize,CourseSearchParamcourseSearchParam){//设置索SearchRequestsearchRequest=new//SearchSourceBuildersearchSourceBuilder=newSearchSourceBuilder();BoolQueryBuilderboolQueryBuilder=QueryBuilders.boolQuery();//source源字段String[]source_fields=source_field.split(",");searchSourceBuilder.fetchSource(source_fields,newString[]{});//关键//匹配关键MultiMatchQueryBuildermultiMatchQueryBuilder=QueryBuilders.multiMatchQuery(courseSearchParam.getKeyword(),"name", //设置匹配占//提升另个字段的Boost}}if(StringUtils.isNotEmpty(courseSearchParam.getSt())){boolQueryBuilder.filter(QueryBuilders.t}}//SearchResponsesearchResponse=null;trysearchResponse= }catch(IOException{;LOGGER.error("xuechengsearchreturnnewQueryResponseResult(CommonCode.SUCCESS,new}//结果集处SearchHitshits=searchResponse.getHits();SearchHit[]searchHits=hits.getHits();//记录总longtotalHits=//数据列List<CoursePub>list=newfor(SearchHithit:{CoursePubcoursePub=new//取出Map<String,Object>sourceAsMap=//取出名Stringname=(String)Stringpic=(String)sourceAsMap.get("pic");//Floatprice=null;try{if(sourceAsMap.get("price")!=nullprice=Float.parseFloat((String)}}catch(Exception{}Floatprice_old=null;try{if(sourceAsMap.get("price_old")!=nullprice_old=Float.parseFloat((String)}}catch(Exception{}}QueryResult<CoursePub>queryResult=newQueryResult<>();QueryResponseResult<CoursePub>coursePubQueryResponseResult=newreturn分页与高publicclassEsCourseServiceprivatestaticfinalLoggerLOGGER=privateStringes_index;privateStringes_type;privateStringsource_field; publicQueryResponseResult<CoursePub>list(intpage,intsize,CourseSearchParamcourseSearchParam){//设置索SearchRequestsearchRequest=new//SearchSourceBuildersearchSourceBuilder=newSearchSourceBuilder();BoolQueryBuilderboolQueryBuilder=QueryBuilders.boolQuery();//source源字段String[]source_fields=source_field.split(",");searchSourceBuilder.fetchSource(source_fields,newString[]{});//关键//匹配关键MultiMatchQueryBuildermultiMatchQueryBuilder=QueryBuilders.multiMatchQuery(courseSearchParam.getKeyword(),"name", //设置匹配占//提升另个字段的Boost}}}}page=}size=}intstart=(page‐1)*size;//布尔查//高亮设HighlightBuilderhighlightBuilder=newHighlightBuilder();highlightBuilder.preTags("<fontclass='eslight'>");//设置高亮字highlightBuilder.fields().add(newHighlightBuilder.Field("name"));//请求搜SearchResponsesearchResponse=null;try{searchResponse= }catch(IOException{;LOGGER.error("xuechengsearchreturnnewQueryResponseResult(CommonCode.SUCCESS,new}//结果集处SearchHitshits=searchResponse.getHits();SearchHit[]searchHits=hits.getHits();//记录总longtotalHits=//数据列List<CoursePub>list=newfor(SearchHithit:{CoursePubcoursePub=n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论