使用spring-data-solr做solr客戶端


        solr的客戶端基本上只有一個,那就是solrj,spring-data-solr是在solrj的基礎上做的封裝,使統一成spring-data的風格

   官方網站:

    http://projects.spring.io/spring-data-solr/

   使用spring-data最簡單的方式就是使用spring-boot,注意多個spring-data之間不能公用,由於之前我們同樣使用了spring-data-jpa 做orm,

  這里要新創建一個項目進行使用spring-data-solr作為solr服務器的客戶端,然后通過分布式進行協同使用。

  首先搭建spring-boot項目,具體參考另外一遍博客。

  添加依賴:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-solr</artifactId>
        </dependency>

  由於spring-boot是集中性的配置,所以在application.properties文件中添加以下配置:

  

# SOLR (SolrProperties)
spring.data.solr.host=http://localhost:8983/solr/mark
#spring.data.solr.zkHost=
spring.data.solr.repositories.enabled=true

    這樣就算是配置完成了

  

  使用spring-data-solr與使用spring-data-jpa幾乎一毛一樣:

  

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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM