1、配置依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>
2、application.properties
spring.data.solr.host=http://192.168.147.130:8983/solr
3、配置文件
package com.vim.common.config;
import org.apache.solr.client.solrj.SolrClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.solr.core.SolrTemplate;
@Configuration
public class BeanConfig {
@Autowired
private SolrClient solrClient;
//此处专门针对每个core设置一个 template 实例
@Bean(name = "goodsSolrTemplate")
public SolrTemplate goodsSolrTemplate(){
return new SolrTemplate(solrClient, "goods");
}
}
4、实体 model
package com.vim.modules.model;
import org.apache.solr.client.solrj.beans.Field;
import org.springframework.data.solr.core.mapping.SolrDocument;
import java.io.Serializable;
@SolrDocument(solrCoreName = "goods")
public class Goods implements Serializable{
@Field
private String id;
@Field
private String goodsName;
@Field
private Double goodsPrice;
@Field
private String goodsTitle;
@Field
private Long goodsStock;
private String startPrice;
private String endPrice;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getGoodsName() {
return goodsName;
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
public Double getGoodsPrice() {
return goodsPrice;
}
public void setGoodsPrice(Double goodsPrice) {
this.goodsPrice = goodsPrice;
}
public String getGoodsTitle() {
return goodsTitle;
}
public void setGoodsTitle(String goodsTitle) {
this.goodsTitle = goodsTitle;
}
public Long getGoodsStock() {
return goodsStock;
}
public void setGoodsStock(Long goodsStock) {
this.goodsStock = goodsStock;
}
public String getStartPrice() {
return startPrice;
}
public void setStartPrice(String startPrice) {
this.startPrice = startPrice;
}
public String getEndPrice() {
return endPrice;
}
public void setEndPrice(String endPrice) {
this.endPrice = endPrice;
}
}
5、业务层 Service
package com.vim.modules.service;
import com.vim.modules.model.Goods;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.solr.core.SolrTemplate;
import org.springframework.data.solr.core.query.Criteria;
import org.springframework.data.solr.core.query.Query;
import org.springframework.data.solr.core.query.SimpleQuery;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class GoodsService {
@Autowired
private SolrTemplate goodsSolrTemplate;
/**
* 新增
* @param goods
*/
public void add(Goods goods) {
goodsSolrTemplate.saveBean(goods);
goodsSolrTemplate.commit();
}
/**
* 删除
* @param id
*/
public void deleteById(String id) {
goodsSolrTemplate.deleteById(id);
goodsSolrTemplate.commit();
}
/**
* 查询
* @param goods
* @return
*/
public List<Goods> query(Goods goods) {
Query query = new SimpleQuery("*:*");
if(StringUtils.isNotBlank(goods.getGoodsName())){
Criteria name = new Criteria("goodsName").contains(goods.getGoodsName());
Criteria title = new Criteria("goodsTitle").contains(goods.getGoodsName());
query.addCriteria(name.or(title));
}
if(StringUtils.isNotBlank(goods.getStartPrice())){
Criteria criteria = new Criteria("goodsPrice").greaterThanEqual(goods.getStartPrice());
query.addCriteria(criteria);
}
if(StringUtils.isNotBlank(goods.getEndPrice())){
Criteria criteria = new Criteria("goodsPrice").lessThanEqual(goods.getEndPrice());
query.addCriteria(criteria);
}
query.setOffset(0);
query.setRows(10);
return goodsSolrTemplate.queryForPage(query, Goods.class).getContent();
}
}