最开始先在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);
}
}
最后测试:
执行结果: