使用spring-data-solr作solr客户端

        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

相关文章
相关标签/搜索