搜索——关键字联想词
需求分析:根据用户输入的关键字展示联想词
搜索词-数据来源
通常是网上搜索频率比较高的一些词,通常在企业中有两部分来源:
第一:自己维护搜索词
通过分析用户搜索频率较高的词,按照排名作为搜索词
第二:第三方获取
关键词规划师(百度)、5118、爱站网
package com.heima.search.service.impl; import com.heima.model.common.dtos.ResponseResult; import com.heima.model.common.enums.AppHttpCodeEnum; import com.heima.model.search.dtos.UserSearchDto; import com.heima.search.pojos.ApAssociateWords; import com.heima.search.service.ApAssociateWordsService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import java.util.List; @Service @Slf4j public class ApAssociateWordsServiceImpl implements ApAssociateWordsService { @Autowired private MongoTemplate mongoTemplate; /** * 搜索联想词 * * @param dto * @return */ @Override public ResponseResult search(UserSearchDto dto) { //1、检查参数 if(StringUtils.isBlank(dto.getSearchWords())){ return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID); } //2、分页检查 if(dto.getPageSize() > 20){ dto.setPageSize(20); } //3、执行查询,模糊查询 Query query = Query.query(Criteria.where("associateWords").regex(".*?\\" + dto.getSearchWords() + ".*")); query.limit(dto.getPageSize()); List<ApAssociateWords> apAssociateWords = mongoTemplate.find(query, ApAssociateWords.class); return ResponseResult.okResult(apAssociateWords); } }