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();
}
}
}