zoukankan      html  css  js  c++  java
  • 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在项目中的安全设置。

  • 相关阅读:
    VSCode一键调用DOSBox运行MASM/TASM代码的自定义任务
    C# | VS2019连接MySQL的三种方法以及使用MySQL数据库教程
    Visual Studio 2019连接MySQL数据库详细教程
    Visual Studio 2022 激活码
    Python | 使用SVM支持向量机进行鸢尾花分类
    Python | __init__.py的神奇用法
    Java简单介绍及Java生态
    NoSQL:一个帝国的崛起
    学习哪门语言好
    浅析HTTP协议
  • 原文地址:https://www.cnblogs.com/yl-space/p/13322046.html
Copyright © 2011-2022 走看看