当前位置: 首页 > news >正文

化工原材料网站建设怎么学平面设计啊

化工原材料网站建设,怎么学平面设计啊,建设网站项目简历,设计师用什么软件设计效果图文章目录 app端文章搜索1、文章搜索1.1 ElasticSearch环境搭建1.2 索引库创建①需求分析②ES导入数据场景分析③创建索引和映射 1.3 索引数据同步①app文章历史数据导入ES②文章实时数据导入ES 1.4 文章搜索多条件复合查询①关键词搜索②搜索接口定义 2、搜索历史记录2.1 需求说… 文章目录 app端文章搜索1、文章搜索1.1 ElasticSearch环境搭建1.2 索引库创建①需求分析②ES导入数据场景分析③创建索引和映射 1.3 索引数据同步①app文章历史数据导入ES②文章实时数据导入ES 1.4 文章搜索多条件复合查询①关键词搜索②搜索接口定义 2、搜索历史记录2.1 需求说明2.2 数据存储说明2.1 异步保存搜索历史①实现思路 2.2 查看搜索历史列表①接口定义 2.3 删除搜索历史 3、联想词查询需求分析3.1 联想词的来源3.2 联想词功能实现接口定义正则表达式说明 app端文章搜索 1、文章搜索 1.1 ElasticSearch环境搭建 1、启动ElasticSearch docker start elasticsearch 2、启动Kibana docker start kibana 3、kibana测试分词效果 1.2 索引库创建 ①需求分析 用户输入关键词 比如java只要文章titile、content包含此关键词就可以搜索出来搜索黑马程序员能把黑马、程序员相关都搜索出来搜索的文章结果里词条要高亮显示用户点击搜索结果任意一条可查看文章详情 ②ES导入数据场景分析 ③创建索引和映射 搜索结果页面展示什么内容 标题布局封面图片发布时间作者名称文章id作者id静态url 哪些字段需要索引和分词 标题内容 使用Kibana添加映射 索引库名称app_info_article PUT /app_info_article {mappings:{properties:{id:{type:long},publishTime:{type:date},layout:{type:integer},images:{type:keyword,index: false},staticUrl:{type:keyword,index: false},authorId: {type: long},authorName: {type: keyword},title:{type:text,analyzer:ik_max_word},content:{type:text,analyzer:ik_max_word}}} }1.3 索引数据同步 ①app文章历史数据导入ES 1、创建es索引和映射 前面创建过了 2、文章微服务集成es功能 导入es服务的依赖 3、编写单元测试将历史状态正常的文章数据同步到es中 数据量特别少一次导入 数据量特别多分批导入一次一两千条 mapper接口和sql语句 /** * 查询es需要的全部文章数据* return*/ ListSearchArticleVo loadSearchArticleList();select idloadSearchArticleList resultTypecom.heima.model.search.vos.SearchArticleVoselect aa.*, aacc.content from ap_article aaleft join ap_article_config aac on aa.idaac.article_idLEFT JOIN ap_article_content aacc on aa.id aacc.article_id where aac.is_down0 and aac.is_delete0/select测试类代码 Autowired private RestHighLevelClient client; /*** 将历史文章数据导入ES中*/ Test public void testImportES() throws IOException {// 1. 查询所有状态正常的文章列表ListSearchArticleVo searchArticleVoList apArticleMapper.loadSearchArticleList();// 2. 构建BulkRequest批量请求对象BulkRequest bulkRequest new BulkRequest();// 3. 遍历文章列表逐一添加IndexRequestfor (SearchArticleVo searchArticleVo : searchArticleVoList) {IndexRequest indexRequest new IndexRequest(app_info_article);indexRequest.source(JSON.toJSONString(searchArticleVo), XContentType.JSON).id(String.valueOf(searchArticleVo.getId()));bulkRequest.add(indexRequest);}// 4. 执行restHighLevelClient的bulk批量插入文档请求BulkResponse bulk client.bulk(bulkRequest, RequestOptions.DEFAULT);// 5. 获取响应结果数据并输出int status bulk.status().getStatus();System.out.println(导入完成响应状态码status);System.out.println();BulkItemResponse[] items bulk.getItems();for (BulkItemResponse item : items) {String result item.getResponse().getResult().getLowercase();System.out.println(result);} }②文章实时数据导入ES 跨服务调用的异步要使用mq 生产者 kafka:bootstrap-servers: 192.168.200.130:9092producer:retries: 10key-serializer: org.apache.kafka.common.serialization.StringSerializervalue-serializer: org.apache.kafka.common.serialization.StringSerializer// 5. 封装es所需的数据转为JSON生产到Kafka中 SearchArticleVo searchArticleVo new SearchArticleVo(); BeanUtils.copyProperties(apArticle,searchArticleVo); searchArticleVo.setStaticUrl(url); searchArticleVo.setContent(contentStr); String articleJson JSON.toJSONString(searchArticleVo); kafkaTemplate.send(ArticleConstants.ARTICLE_ES_SYNC_TOPIC,articleJson);消费者 spring:kafka:bootstrap-servers: 192.168.200.130:9092consumer:group-id: ${spring.application.name}key-deserializer: org.apache.kafka.common.serialization.StringDeserializervalue-deserializer: org.apache.kafka.common.serialization.StringDeserializerComponent Slf4j public class ApArticleImportESListener {Autowiredprivate RestHighLevelClient client;KafkaListener(topics ArticleConstants.ARTICLE_ES_SYNC_TOPIC)public void msg (ConsumerRecordString,String consumerRecord) {if (consumerRecord ! null) {String articleJSON consumerRecord.value();SearchArticleVo searchArticleVo JSON.parseObject(articleJSON, SearchArticleVo.class);IndexRequest indexRequest new IndexRequest(app_info_article);indexRequest.source(articleJSON, XContentType.JSON).id(searchArticleVo.getId().toString());try {IndexResponse indexResponse client.index(indexRequest, RequestOptions.DEFAULT);String result indexResponse.getResult().getLowercase();String desc result.equals(created) ? 导入成功 : 导入失败;log.info([异步导入APP文章到ES]导入结果{}, desc);} catch (IOException e) {throw new RuntimeException(e);}}} } 1.4 文章搜索多条件复合查询 ①关键词搜索 ②搜索接口定义 2、搜索历史记录 2.1 需求说明 异步保存搜索记录默认查询10条搜索记录按照搜索关键词的时间倒序可以删除搜索记录 2.2 数据存储说明 用户的搜索记录需要给每一个用户都保存一份数据量大要求加载速度快通常这样的数据存储到mongodb更合适不建议直接存储到关系型数据库中 2.1 异步保存搜索历史 ①实现思路 保存的数据量太大不想同步影响效率采用异步保存 Service Slf4j public class ApUserSearchServiceImpl implements ApUserSearchService {Autowiredprivate MongoTemplate mongoTemplate;Async(taskExecutor)Overridepublic void insert(String keyword, Integer userId) {// 1. 查询搜索记录Query query Query.query(Criteria.where(keyword).is(keyword).and(userId).is(userId));ApUserSearch apUserSearch mongoTemplate.findOne(query, ApUserSearch.class);// 2. 如果搜索记录不存在则保存搜索记录if (apUserSearch null) {apUserSearch new ApUserSearch();SnowflakeIdWorker isWorker new SnowflakeIdWorker(10, 10);apUserSearch.setId(isWorker.nextId());// 使用雪花算法的值当做主键IDapUserSearch.setUserId(userId);apUserSearch.setKeyword(keyword);apUserSearch.setIsDeleted(0); // 未删除apUserSearch.setCreatedTime(new Date());apUserSearch.setUpdatedTime(new Date());mongoTemplate.save(apUserSearch);return;}// 3. 如果搜索记录存在且未删除,则更新updatedTimeif (apUserSearch.getIsDeleted() 0) {apUserSearch.setUpdatedTime(new Date());mongoTemplate.save(apUserSearch);return;}// 4. 如果搜索记录存在且已删除则更新为未删除及更新updateTimeapUserSearch.setIsDeleted(0);apUserSearch.setUpdatedTime(new Date());mongoTemplate.save(apUserSearch);} } 2.2 查看搜索历史列表 ①接口定义 按照当前用户按照时间倒序查询 Overridepublic ResponseResult findUserSearch() {// 根据条件查询搜索记录列表条件userId和isDeleted 结果updateTime倒序Query query Query.query(Criteria.where(userId).is(ThreadLocalUtil.getUserId()).and(isDeleted).is(0)).with(Sort.by(Sort.Direction.DESC,updateTime));query.limit(10);ListApUserSearch apUserSearchList mongoTemplate.find(query, ApUserSearch.class);return ResponseResult.okResult(apUserSearchList);}2.3 删除搜索历史 根据搜索历史id删除 Overridepublic ResponseResult delUserSearch(HistorySearchDto dto) {ApUserSearch apUserSearch mongoTemplate.findById(dto.getId(), ApUserSearch.class);if (apUserSearch null) {return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST,搜索记录不存在);}// 更新记录为已删除apUserSearch.setIsDeleted(1);apUserSearch.setUpdatedTime(new Date());mongoTemplate.save(apUserSearch);return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);}3、联想词查询 需求分析 根据用户输入的关键字展示联想词 3.1 联想词的来源 通常是网上搜索频率比较高的一些词通常在企业中有两部分来源 第一自己维护搜索词 通过分析用户搜索频率较高的词按照排名作为搜索词 第二第三方获取 关键词规划师百度、5118、爱站网 3.2 联想词功能实现 接口定义 正则表达式说明 Service Slf4j public class ApAssociateWordsServiceImpl implements ApAssociateWordsService {Autowiredprivate MongoTemplate mongoTemplate;Overridepublic ResponseResult search(UserSearchDto dto) {// 替换一切特殊字符dto.setSearchWords(dto.getSearchWords().replaceAll([^\u4e00-\u9fa5a-zA-z0-9], ));ListApAssociateWords apAssociateWordsList mongoTemplate.find(Query.query(Criteria.where(associateWords).regex(.*?\\ dto.getSearchWords() .*)).limit(dto.getPageSize()), ApAssociateWords.class);return ResponseResult.okResult(apAssociateWordsList);} }
http://www.ho-use.cn/article/10819823.html

相关文章:

  • 自己可以做百度网站吗电子商务教材电子版
  • 柯城网站建设免费在线观看高清影片
  • 大流量网站开发网站备案被注销
  • 联英人才网重庆招聘网百度seo排名优化助手
  • 成都大丰网站建设例表网网站排名优化服务商
  • 英文网站建设 潍坊手机电商网站 模板
  • 建设外贸企业网站wordpress 小学生
  • 常熟市住房建设局网站门户网站设计与开发
  • 做家常便饭网站韶关住房和城乡建设网站
  • 建工网官方网站标准网站建设哪家便宜
  • 微网站如何建立的地下城钓鱼网站怎么做
  • 可以做翻译兼职的网站有哪些wordpress服务器要求
  • 重庆秀山网站建设价格google chrome官网
  • 怎么建设网站最便宜公司网站简介怎么做
  • 山西推广型网站制作风铃网做微网站要钱吗
  • 动漫网站怎么做的郴州seo公司
  • 安徽外贸网站google建站网站建设论文3000字范文
  • 怎么建立图片的网站吗wordpress 插件 块
  • 网站建设维护费最新军事新闻热点事件
  • 创建一个网站需要什么wordpress小绿锁
  • 简述建设一个网站的具体步骤6桂林生活网二手房市场
  • 惠州网站建设教程自己做网站服务器多少钱
  • 网站开发中什么是站点青岛做网站eoe
  • 票务网站开发什么是门户类型的网站
  • 做视频素材网站网站结构是体现的
  • c2c网站特点wordpress建影视网站
  • 受欢迎的网站建设教程腾讯云lamp wordpress
  • 常州哪里做网站重庆响应式网站设计
  • 做网站还是做微信公众号厂房建设公司哪家好
  • 玉溪网站开发手机网站页面尺寸大小