Spring Data Solr

Spring Data Solr介紹

  Spring Data Solr就是爲了方便Solr的開發所研發的一個框架,其底層是對SolrJ(官方API)的封裝。

Spring Data Solr使用

  新建模塊,spring-data-solr-test/pom.xml文件,配置依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>pyg-test</artifactId>
        <groupId>cn.itcast</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>spring-data-solr-test</artifactId>
    <name>spring-data-solr-test</name>
    <dependencies>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-solr</artifactId>
            <version>1.5.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>4.3.10.RELEASE</version>
        </dependency>
    </dependencies>
</project>

  在spring-data-solr-test/src/main/java/目錄下創建 pojo 包,將Item實體類拷入本工程,屬性使用@Field註解標識,如果屬性與配置文件定義的域名稱不一致,需要在註解中指定域名稱。

public class Item implements Serializable {
    @Field
    private Long id;
    @Field("title")
    private String title;
    @Field("price")
    private double price;
    @Field("image")
    private String image;
    @Field("goodsId")
    private Long goodsId;
    @Field("category")
    private String category;
    @Field("brand")
    private String brand;
    @Field("seller")
    private String seller;
@Field("updateTime")
private Date updateTime;

    /** setter and getter method */
public void setPrice(BigDecimal price) {
       this.price = price.doubleValue();
    }
    ......
}

  在spring-data-solr-test/src/main/resources/目錄下,創建Solr配置文件: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: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.xsd
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 配置SolrServer -->
    <solr:solr-server id="solrServer" 
url="http://192.168.12.131:8088/solr/collection1"/>

    <!-- 配置SolrTemplate,它可以對Solr索引庫做CRUD操作 -->
    <bean id="solrTemplate" 
class="org.springframework.data.solr.core.SolrTemplate">
        <constructor-arg name="solrServer" ref="solrServer"/>
    </bean>
</beans>

  在spring-data-solr-test/src/test/java/solr包下,創建測試類Solr01Test.java

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext-solr.xml")
public class Solr01Test {
    @Autowired
    private SolrTemplate solrTemplate;
    /** 添加或修改 */
    @Test
    public void saveOrUpdate(){
        Item item = new Item();
        item.setId(71c52d);
        item.setBrand("蘋果");
        item.setCategory("手機");
        item.setGoodsId(4b52cd);
        item.setSeller("蘋果專賣店");
        item.setTitle("iPhoneX");
        item.setPrice(new BigDecimal(2000));
        item.setUpdateTime(new Date());
        /** 添加或修改 */
        UpdateResponse updateResponse = solrTemplate.saveBean(item);
        if (updateResponse.getStatus() == 0) {
            solrTemplate.commit();
        }else {
            solrTemplate.rollback();
        }
    }
}

  

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章