SolrJ集成步骤

最开始先在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);
    }
}

 

 

最后测试:

 

执行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值