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();
    }
  • 相关阅读:
    771. Jewels and Stones
    706. Design HashMap
    811. Subdomain Visit Count
    733. Flood Fill
    117. Populating Next Right Pointers in Each Node II
    250. Count Univalue Subtrees
    94. Binary Tree Inorder Traversal
    116. Populating Next Right Pointers in Each Node
    285. Inorder Successor in BST
    292. Nim Game Java Solutin
  • 原文地址:https://www.cnblogs.com/wangju/p/11908392.html
Copyright © 2011-2022 走看看