SolrJ集成步骤

梦想的初衷 提交于 2020-01-15 00:53:54

最开始先在pom文件导入solr

    <dependency>
      <groupId>org.apache.solr</groupId>
      <artifactId>solr-solrj</artifactId>
      <version>5.3.1</version>
    </dependency>

 

第一步:创建solr查询的接收对象

每个属性配置上Field属性

 

第二步:编写客户端程序

1.创建HttpSolrClient对象

2.创建SolrQuery对象

3.创建QueryResponse数据接收对象

4.接收数据,转化数据

package cn.solrDemo;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.impl.XMLResponseParser;
import org.apache.solr.client.solrj.response.QueryResponse;


import java.io.IOException;
import java.util.List;

public class App 
{
    //请求的url,solr访问的URL路径+core名称
    public  static  String url="http://localhost:8080/solr/hotel";

    public static void main( String[] args ) {
        //1.创建HttpSolrClient对象
        HttpSolrClient httpSolrClient = new HttpSolrClient(url);
        //配置解析器
        httpSolrClient.setParser(new XMLResponseParser());
        httpSolrClient.setConnectionTimeout(500);//设置连接时间
        //2.设置查询参数 solrQuery
        SolrQuery query = new SolrQuery("*:*");//设置Q的查询参数
        query.setQuery("*:*");//设置Q的查询参数
        //设置FQ
        //query.addFilterQuery();
        query.setSort("id",SolrQuery.ORDER.desc);
        query.setStart(0);//从第一条记录开始查
        query.setRows(5);//显示多少条
        //3.接收返回转化成为对象
        QueryResponse response = null;
        List<Hotel> hotelList = null;
        try {
            response = httpSolrClient.query(query);
            hotelList = response.getBeans(Hotel.class);
            for(Hotel hotel : hotelList){
                System.out.println(hotel.getHotelName());
            }
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行测试:启动tomcat之后再运行程序

 

 

 

===========================下面是编写Solr的项目封装==========================

第一步:编写SolrBaseDao

package cn.solrDemo.solrDao;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.impl.XMLResponseParser;
import org.apache.solr.client.solrj.response.QueryResponse;

import java.io.IOException;
import java.util.List;

public class SolrBaseDao<T> {

    private HttpSolrClient httpSolrClient = null;
    private QueryResponse response = null;

    /**
     * 初始化SolrBaseDao时配置解析器
     * @param url
     */
    public SolrBaseDao(String url){
        //配置解析器
        httpSolrClient = new HttpSolrClient(url);
        httpSolrClient.setParser(new XMLResponseParser());
        httpSolrClient.setConnectionTimeout(500);//设置连接时间
    }

    /**
     * 根据查询条件获取结果
     * @param query
     * @param clazz
     * @return
     */
    public List<T> getList(SolrQuery query,Class clazz){
        //接收返回转化成为对象
        List<T> list = null;
        try {
            response = httpSolrClient.query(query);
            list = response.getBeans(clazz);
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            return list;
        }
    }
}

 

第二步:编写Dao层,设置查询条件,

往SolrQuery里设置查询条件

package cn.solrDemo.solrDao;

import cn.solrDemo.Hotel;
import org.apache.solr.client.solrj.SolrQuery;

import java.util.List;

public class HotelDao {

    //请求的url,solr访问的URL路径+core名称
    private String url="http://localhost:8080/solr/hotel";

    private SolrBaseDao<Hotel> solrBaseDao = new SolrBaseDao<>(url);

    public List<Hotel> getHotelList(String keyword){
        SolrQuery query = new SolrQuery();
        query.setQuery("keyword:" + keyword);
        return solrBaseDao.getList(query,Hotel.class);
    }
}

 

 

最后测试:

 

执行结果:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!