您当前的位置: 首页 >  spring

45分布式电商项目 - SpringDataSolr 入门例子

杨林伟 发布时间:2019-07-10 14:38:53 ,浏览量:2

代码已上传至Github 地址:https://github.com/ylw-github/Spring-Data-Solr-Demo.git

1.集成步骤:

(1)创建 maven 工程,pom.xml 中引入依赖


   org.apache.solr
   solr-solrj
   ${solrj.version}


   org.springframework.data
   spring-data-solr
   1.5.5.RELEASE

(2)在 src/main/resources 下创建 applicationContext-solr.xml




	
	
	
		
	

2.域注解

创建 cn.itcast.pojo 包,将品优购的 TbItem 实体类拷入本工程 ,属性使用@Field 注解标识 。 如果属性与配置文件定义的域名称不一致,需要在注解中指定域名称。

package com.pyg.pojo;

import org.apache.solr.client.solrj.beans.Field;
import org.springframework.data.solr.core.mapping.Dynamic;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;

public class TbItem implements Serializable{
    /**
	 * 
	 */
	private static final long serialVersionUID = -4730788370859047528L;

	@Field
	private Long id;

	@Field("item_title")
    private String title;
	

    @Field("item_price")
    private BigDecimal price;

    @Field("item_image")
    private String image;
    
    @Field("item_goodsid")
    private Long goodsId;

    @Field("item_category")
    private String category;
    
    @Field("item_brand")
    private String brand;

    @Field("item_seller")
    private String seller;
    
    //定义一个map,用来封装动态域: 规格数据
    @Dynamic
    @Field("item_spec_*")
    private Map specMap;
        
     //getter和setter......
}
3.单元测试如下
import com.pyg.pojo.TbItem;

import org.junit.Test;
import org.junit.runner.RunWith;
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.data.solr.core.query.result.ScoredPage;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.math.BigDecimal;
import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath*:spring/applicationContext-solr.xml")
public class MySpringDataSOlr {

	// 注入solr模版对象
	@Autowired
	private SolrTemplate solrTemplate;

	// 测试
	// 向索引库添加数据
	@Test
	public void addIndex() {
		// 创建商品对象
		TbItem item = new TbItem();
		//
		item.setId(100000000000L);
		item.setGoodsId(10101010101L);
		item.setTitle("番茄手机16G 5");
		item.setPrice(new BigDecimal(10000000));
		item.setBrand("番茄");
		item.setCategory("手机");

		// 写入数据到索引库
		solrTemplate.saveBean(item);
		// 提交
		solrTemplate.commit();

	}

	// 测试
	// 根据id查询
	@Test
	public void findIndexByID() {

		TbItem item = solrTemplate.getById(100000000000L, TbItem.class);
		System.out.println(item.toString());

	}

	// 测试
	// 分页查询
	@Test
	public void findIndexByPage() {

		// 创建solrQuery对象,封装条件
		Query query = new SimpleQuery("*:*");
		// 设置分页条件
		// 设置分页查询起始位置
		query.setOffset(0);
		// 设置分页查询每页显示条数
		query.setRows(10);

		// 执行查询
		ScoredPage page = solrTemplate
				.queryForPage(query, TbItem.class);

		// 获取分页记录
		List list = page.getContent();
		// 获取总记录数
		long totalElements = page.getTotalElements();
		System.out.println(totalElements + "====" + list);

	}

	// 测试
	// 条件查询
	@Test
	public void findIndexByCritera() {

		// 创建solrQuery对象,封装条件
		Query query = new SimpleQuery("*:*");
		//创建封装条件对象
		Criteria criteria = new Criteria("item_keywords").is("番茄");
		criteria.contains("16");
		//把条件添加查询对象
		query.addCriteria(criteria);
		
		ScoredPage page = solrTemplate.queryForPage(query, TbItem.class);
		//获取记录
		List content = page.getContent();
		System.out.println(content);
	}
	
	@Test
	public void testDeleteAll(){
		Query query=new SimpleQuery("*:*");
		solrTemplate.delete(query);
		solrTemplate.commit();
	}


}

关注
打赏
1688896170
查看更多评论

杨林伟

暂无认证

  • 2浏览

    0关注

    3183博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0881s