• Solr专题(三)SSM项目整合Solr


    一、环境配置

    所需要的jar包: org.apache.solr.solr-solrj

    maven依赖:

    <!-- https://mvnrepository.com/artifact/org.apache.solr/solr-solrj -->
    <dependency>
        <groupId>org.apache.solr</groupId>
        <artifactId>solr-solrj</artifactId>
        <version>7.7.2</version>
    </dependency>
    

    二、教程

    solr查询方法:

    /**
     * 执行solr查询
     * @param query SolrQuery
     * @param pageNo 页码
     * @param pageSize 页面数据大小
     * @param orderBy 排序
     * @return Map<String, Object>
     */
    public Map<String, Object> getSolrQuery(String query, String pageNo, String pageSize, String orderBy){
    	SolrQuery solrQuery = new SolrQuery();
    	solrQuery.set(CommonParams.Q, query);
    	Map<String, Object> map = Maps.newHashMap();
    	map.put("total", 0);
    	map.put("rows", Collections.emptyList());
    	try {
    		Integer no = PageUtils.parseNo(pageNo);
    		Integer size = PageUtils.parseSize(pageSize);
    		Integer offset = PageUtils.getOffset(no, size);
    		solrQuery.setStart(offset);
    		solrQuery.setRows(size);
    		setOrder(solrQuery, orderBy);
    		//执行查询并返回结果
    		QueryResponse resp = solrClient.query(solrQuery);
    		SolrDocumentList results = resp.getResults();
    		//获取查询到的数据总量
    		long numFound = results.getNumFound();
    		if(numFound <= 0) {
    			return map;
    		}else {
    			map.put("total", numFound);
    			map.put("rows", convert(results));
    			return map;
    		}
    	} catch (Exception e) {
    		LOGGER.error(e.getMessage(), e);
    		return map;
    	}
    }
    
    /**
     * 设置排序方式
     * 
     * @param solrQuery SolrQuery
     * @param orderBy 排序字段 example:name desc
     */
    private void setOrder(SolrQuery solrQuery, String orderBy) {
    	if(VerifyUtils.isEmpty(orderBy)) {
    		return;
    	}
    	String[] split = orderBy.split(SPACE);
    	if("asc".equals(split[1].toLowerCase())) {
    		solrQuery.setSort(split[0], ORDER.asc);
    	}else {
    		solrQuery.setSort(split[0], ORDER.desc);
    	}
    }
    

    其中SolrQuery实体为Solr的查询实体,其调用方法

    set( String name, String ... val ):设置查询参数,name可以使用org.apache.solr.common.params.CommonParams类调用,具体参数与上一节 Solr专题(二)详解Solr查询参数 一致。

    下节主要讲解solr在项目中的安全设置。

  • 相关阅读:
    慎用rm -rf
    Jquery 中a||""的含义
    【学习、总结】Spring security 登陆超时处理
    Eclipse 无限编译Invoking 'Maven Project Builder'导致卡主
    For多重循环 break continue
    随机编码的生成
    QQ互联Oauth2.0认证测试
    Java开发工程师(Web方向)
    Java开发工程师(Web方向)
    前端开发工程师
  • 原文地址:https://www.cnblogs.com/yl-space/p/13322046.html
Copyright © 2020-2023  润新知