zoukankan      html  css  js  c++  java
  • Solr使用总结

     先记录下实例

    配置文件

    spring.data.solr.host=http://localhost:8983/solr

    maven依赖
    <dependency>
         <groupId>org.springframework.data</groupId>
         <artifactId>spring-data-solr</artifactId>
         <version>${spring.data.solr.version}</version>
    </dependency>


    /**
     * @Author: liuxs
     * @Description: 通过solr检索银行信息
     * @Date: Create in 18:28 2018/7/30.
     */
    @Service
    public class BankSolrService {
    
        @Autowired
        private BankRepository bankRepository;
    
        @Autowired
        private SolrClient solrClient;
    
        public List<BankBranch> queryBranch(QueryBankBean queryBean) throws Exception {
            List<BankBranch> bankBranches = new ArrayList<>();
            QueryResponse response = solrClient.query("my_core", convertQuery(queryBean));
            SolrDocumentList results = response.getResults();
            // 数量,分页用
            long total = results.getNumFound();
            for (SolrDocument document : results) {
                bankBranches.add(covertBankBranch(document));
            }
            return bankBranches;
        }
    
        /**
         * 整合检索参数
         * @param queryBean
         * @return
         * todo 硬编码抽出
         */
        public SolrQuery convertQuery(QueryBankBean queryBean) {
            SolrQuery solrQuery = new SolrQuery();
            if (StringUtils.isEmpty(queryBean.getBankName())) {
                throw new RuntimeException("银行名称不能为空");
            }
            if (StringUtils.isEmpty(queryBean.getBranchName())) {
                throw new RuntimeException("银行支行名称不能为空");
            }
            String bankCode = bankRepository.findBankCodeByAliasName(queryBean.getBankName());
            solrQuery.setQuery("branchName=" + queryBean.getBankName() + queryBean.getBranchName());
            solrQuery.addFilterQuery("bankCode=" + bankCode);
    
            //分页,默认10条每页
            solrQuery.setRows(queryBean.getSize());
            if (StringUtils.isEmpty(queryBean.getPage())) {
                solrQuery.setStart(0);
            } else {
                solrQuery.setStart(queryBean.getPage() * solrQuery.getRows());
            }
            return solrQuery;
        }
    
        /**
         * Document To Object
         * @param d
         * @return
         */
        private BankBranch covertBankBranch(SolrDocument d) {
            BankBranch branch = new BankBranch();
            branch.setRelateCode(d.containsKey("relateCode") ? String.valueOf(d.get("relateCode")) : "");
            branch.setBranchName(d.containsKey("branchName") ? String.valueOf(d.get("branchName")) : "");
            branch.setBankCode(d.containsKey("bankCode") ? String.valueOf(d.get("bankCode")) : "");
            branch.setBankName(d.containsKey("bankName") ? String.valueOf(d.get("bankName")) : "");
            branch.setProvinceCode(d.containsKey("provinceCode") ? String.valueOf(d.get("provinceCode")) : "");
            branch.setProvinceName(d.containsKey("provinceName") ? String.valueOf(d.get("provinceName")) : "");
            branch.setCityCode(d.containsKey("cityCode") ? String.valueOf(d.get("cityCode")) : "");
            branch.setCityName(d.containsKey("cityName") ? String.valueOf(d.get("cityName")) : "");
            return branch;
        }
    
    }
  • 相关阅读:
    6. (在第五步的基础上展开)实现模板推送发送
    5. (全局唯一接口调用凭据)获取Access token
    3. openid的获取
    2. 验证服务器地址的有效性
    Java后端开发规范
    4. (自定义菜单和删除全部菜单)Springboot读取静态json文件
    Docker私有仓库搭建与部署
    Docker容器基础学习一
    运维日志切割--logrotate
    zookeeper学习
  • 原文地址:https://www.cnblogs.com/liuxs13/p/9406087.html
Copyright © 2011-2022 走看看