solr的客戶端基本上只有一個,那就是solrj,spring-data-solr是在solrj的基礎上作的封裝,使統一成spring-data的風格html
官方網站:spring
http://projects.spring.io/spring-data-solr/服務器
使用spring-data最簡單的方式就是使用spring-boot,注意多個spring-data之間不能公用,因爲以前咱們一樣使用了spring-data-jpa 作orm,app
這裏要新建立一個項目進行使用spring-data-solr做爲solr服務器的客戶端,而後經過分佈式進行協同使用。分佈式
首先搭建spring-boot項目,具體參考另一遍博客。spring-boot
添加依賴:網站
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-solr</artifactId> </dependency>
因爲spring-boot是集中性的配置,因此在application.properties文件中添加如下配置:ui
# SOLR (SolrProperties)
spring.data.solr.host=http://localhost:8983/solr/mark
#spring.data.solr.zkHost=
spring.data.solr.repositories.enabled=true
這樣就算是配置完成了spa
使用spring-data-solr與使用spring-data-jpa幾乎一毛同樣:.net
public interface MarkSolrRepository extends SolrCrudRepository<SearchMark, String> { @Query("value:?0") List<SearchMark> findAllByValue(String markey, Pageable pageable); }
不過有一些區別:
1.@Query中的是solr的語法,而且參數計數是從0開始的(spring-data-jpa是從1開始的)
2.每一個映射的實體類必須有@ID主鍵
@Entity public class SearchMark implements Serializable { private static final long serialVersionUID = 1229830543809682342L; @org.springframework.data.annotation.Id private String id;// 惟一主鍵 @Field() private String value;// 標籤的值 @Field() private int type;// 類型 @Field("datam_id") private int datamId;// 數據id @Field("create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08") private Date createTime;// 建立時間
注意@id是@org.springframework.data.annotation.Id
其餘用法參考:
http://projects.spring.io/spring-data-solr/
http://docs.spring.io/spring-data/solr/docs/1.0.0.RC1/reference/html/
http://www.petrikainulainen.net/programming/solr/spring-data-solr-tutorial-crud-almost/?utm_source=tuicool&utm_medium=referral