.Spring Data Solr入门+实战demo

SpringData Solr简介

虽然支持任何编程语言的能力具有很大的市场价值,你可能感兴趣的问题是:我如何将Solr的应用集成到Spring中?可以,Spring Data Solr就是为了方便Solr的开发所研制的一个框架,其底层是对SolrJ(官方API)的封装。

SpringData Solr入门小Demo

 搭建工程

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

   <dependencies>
	<dependency>
	    <groupId>org.springframework.data</groupId>
	    <artifactId>spring-data-solr</artifactId>
	    <version>1.5.5.RELEASE</version>
	</dependency> 
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-test</artifactId>
		<version>4.2.4.RELEASE</version>
	</dependency>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.9</version>
	</dependency>
  </dependencies>

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

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"

    xmlns:context="http://www.springframework.org/schema/context"

    xmlns:solr="http://www.springframework.org/schema/data/solr"

    xsi:schemaLocation="http://www.springframework.org/schema/data/solr

         http://www.springframework.org/schema/data/solr/spring-solr-1.0.xsd

         http://www.springframework.org/schema/beans

         http://www.springframework.org/schema/beans/spring-beans.xsd

         http://www.springframework.org/schema/context

         http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- solr服务器地址 -->

    <solr:solr-server id="solrServer" url="http://127.0.0.1:8080/solr" />

    <!-- solr模板,使用solr模板可对索引库进行CRUD的操作 -->

    <bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate">

         <constructor-arg ref="solrServer" />

    </bean>

</beans>

@Field

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

publicclass TbItem implements Serializable{

 

    @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;

.......

}

 

2.2.3增加(修改)

创建测试类TestTemplate.java

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations="classpath:applicationContext-solr.xml")

publicclass TestTemplate {

 

    @Autowired

    private SolrTemplate solrTemplate;

   

    @Test

    publicvoid testAdd(){

         TbItem item=new TbItem();

         item.setId(1L);

         item.setBrand("华为");

         item.setCategory("手机");

         item.setGoodsId(1L);

         item.setSeller("华为2号专卖店");

         item.setTitle("华为Mate9");

         item.setPrice(new BigDecimal(2000));      

         solrTemplate.saveBean(item);

         solrTemplate.commit();

    }

}

2.2.4按主键查询

    @Test

    publicvoid testFindOne(){

         TbItem item = solrTemplate.getById(1, TbItem.class);

         System.out.println(item.getTitle());

    }

2.2.5按主键删除

    @Test

    publicvoid testDelete(){

         solrTemplate.deleteById("1");

         solrTemplate.commit();

    }

2.2.6分页查询

首先循环插入100条测试数据

    @Test

    publicvoid testAddList(){

         List<TbItem> list=new ArrayList();

        

         for(inti=0;i<100;i++){

             TbItem item=new TbItem();

             item.setId(i+1L);

             item.setBrand("华为");

             item.setCategory("手机");

             item.setGoodsId(1L);

             item.setSeller("华为2号专卖店");

             item.setTitle("华为Mate"+i);

             item.setPrice(new BigDecimal(2000+i));

             list.add(item);

         }

        

         solrTemplate.saveBeans(list);

         solrTemplate.commit();

    }

 

编写分页查询测试代码:

   

    @Test

    publicvoid testPageQuery(){

         Query query=new SimpleQuery("*:*");

         query.setOffset(20);//开始索引(默认0

         query.setRows(20);//每页记录数(默认10)

         ScoredPage<TbItem> page = solrTemplate.queryForPage(query, TbItem.class);

         System.out.println("总记录数:"+page.getTotalElements());

         List<TbItem> list = page.getContent();

         showList(list);

    }  

    //显示记录数据

    privatevoid showList(List<TbItem> list){     

         for(TbItem item:list){

             System.out.println(item.getTitle() +item.getPrice());

         }       

    }

 

2.2.7条件查询

 Criteria用于对条件的封装:

@Test

    public void testPageQueryMutil(){

         Query query=new SimpleQuery("*:*");

         Criteria criteria=new Criteria("item_title").contains("2");

         criteria=criteria.and("item_title").contains("5");    

         query.addCriteria(criteria);

         //query.setOffset(20);//开始索引(默认0

         //query.setRows(20);//每页记录数(默认10)

         ScoredPage<TbItem> page = solrTemplate.queryForPage(query, TbItem.class);

         System.out.println("总记录数:"+page.getTotalElements());

         List<TbItem> list = page.getContent();

         showList(list);

    }

2.2.8删除全部数据

    @Test

    publicvoid testDeleteAll(){

         Query query=new SimpleQuery("*:*");

         solrTemplate.delete(query);

         solrTemplate.commit();

    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
    本课程全程使用目前比较流行的开发工具idea进行开发,涉及到目前互联网项目中最常用的高并发解决方案技术, 如dubbo,redis,solr,freemarker,activeMQ,springBoot框架,微信支付,nginx负载均衡,电商活动秒杀,springSecurity安全框架,FastDFS分布式文件服务器,还会涉及到代码生成器,   前台的技术有angularJS和BootStrap框架,此课程内容丰富实战性强,如果你还是传统项目的开发人员,那你学完本课程会有很大的收获,让你的薪资上涨,5K以上,让你完全感受到了互联网思维带来的高 并发解决方案的思路,如果你是开发的小白,建议你学完Spring,SpringMVC,MyBatis框架后再来学习本门课程,学完以后会让你完全体验到企业级开发的流程.在职开发人员学完后会让你的薪资更高,让你更了解互联网是如何解决高并发 学完SSM框架的同学就可以学习,能让你切身感受到企业级开发环境目标1:完成solr环境安装、中文分析器和业务域的配置目标2:会使用Spring Data Solr完成增删改查操作目标3:完成批量数据导入功能目标4:完成按关键字搜索功能目标5:实现考拉易购搜索结果高亮显示功能目标6:说出考拉易购搜索的业务规则和实现思路目标7:完成查询分类列表的功能目标8:完成缓存品牌和规格数据的功能目标9:完成显示品牌和规格数据的功能目标10:完成过滤条件构建的功能目标11:完成过滤查询的功能目标11:实现考拉易购价格区间筛选功能目标12:实现搜索结果分页功能目标13:理解多关键字搜索目标14:实现搜索结果排序功能目标15:实现隐藏品牌列表功能目标16:实现搜索页与首页对接功能目标17:完成更新索引库的功能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值