zoukankan      html  css  js  c++  java
  • SpringDataSolr入门

    1 Spring Data Solr简介

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

    2 Spring Data Solr入门小Demo

    2.1 搭建工程

    (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.12</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://192.168.188.128:8080/solr" />
    <!-- solr模板,使用solr模板可对索引库进行CRUD的操作 -->
    <bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate">
    <constructor-arg ref="solrServer" />
    </bean>
    </beans>

    2.2.2 @Field 注解 

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

    public class TbItem implements Serializable{
        @Field
        private Long id;
        @Field("item_title")
        private String title;
        private String sellPoint;
        @Field("item_price")
        private BigDecimal price;
        private Integer stockCount;
        private Integer num;
        private String barcode;
        @Field("item_image")
        private String image;
        private Long categoryid;
        private String status;
        private Date createTime;
        private Date updateTime;
        private String itemSn;
        private BigDecimal costPirce;
        private BigDecimal marketPrice;
        private String isDefault;
        @Field("item_goodsid")
        private Long goodsId;
        private String sellerId;
        private String cartThumbnail;
        @Field("item_category")
        private String category;
        @Field("item_brand")
        private String brand;
        private String spec;
        @Field("item_seller")
        private String seller;
    }

    2.2.3 增加(修改) 

    创建测试类TestTemplate.java

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations="classpath:applicationContext-solr.xml")
    public class TestTemplate {
    @Autowired
    private SolrTemplate solrTemplate;
    @Test
    public void 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
    public void testFindOne(){
    TbItem item = solrTemplate.getById(1, TbItem.class);
    System.out.println(item.getTitle());
    }

    2.2.5 按主键删除

    @Test
    public void testDelete(){
    solrTemplate.deleteById("1");
    solrTemplate.commit();
    }

    2.2.6 分页查

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

    @Test
    public void testAddList(){
    List<TbItem> list=new ArrayList();
    for(int i=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
    public void 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);
    }
    //显示记录数据
    private void 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
    public void testDeleteAll(){
    Query query=new SimpleQuery("*:*");
    solrTemplate.delete(query);
    solrTemplate.commit();
    }
  • 相关阅读:
    SpringBoot整合Druid(阿里巴巴)数据源
    SpringBoot整合Jdbc
    SpringBoot使用外置的Servlet容器
    SpringBoot使用其他的Servlet容器
    question 002: dev c++ 当中如何调整字体大小?How to get the first program with C++? c++属于什么软件?
    c++ 程序设计question 001:我们的开发工具是什么?
    问题007:JDK版本与JRE版本不同导致java.exe执行类文件错误 java.lang.UnsupportedClassVersionError错误
    问题006:为什么用java.exe执行编译的类文件的时候,不这样写java Welcome.class
    问题005:如何配置JDK,Java运行环境?
    DOS当中的基本操作命令,如何切换磁盘,如何查看文件和文件夹,如何清屏,进入文件夹的命令,javac是什么意思,作用是什么?DOS如何建文件夹?退出文件夹?
  • 原文地址:https://www.cnblogs.com/wangju/p/11908392.html
Copyright © 2011-2022 走看看