Spring Data Solr 教程与源码下载
Spring Data Solr 教程: 加入定制方法到所有仓储源码下载
Spring并不直接支持Solr云,见our application must be able to communicate with both a local Solr server and a SolrCloud,只能给Sor的仓储加入定制方法完成。
以书店为案例,实体类如下:
public class Book {
@Field
private String id;
@Field
private String name;
@Field
private String description;
@Field("categories_txt")
private List<Category> categories;
// getters/setters
}
|
1
2
3 |
public enum Category {
EDUCATION, HISTORY, HUMOR, TECHNOLOGY, ROMANCE, ADVENTURE
}
|
每本书都有一个唯一的ID,名称,描述和所属的一个或多个类别。Solr在默认情况下为每个文档需要String类型的唯一ID。需要添加到Solr索引的字段就要标注@ field注解。默认情况下SolrJ的尝试将文档字段名映射到同一个名字的Solr的字段。如果你想改变Solr的字段,在<solr home>/example/solr/collection1/conf/schema.xml下可以更改。
下面建立一个仓储:
下面调用这个仓储,将书籍Book加入:
加入分页功能,每页十个,在仓储中加入:
Page<Book> findByNameOrDescription(
@Boost(2) String name, String description, Pageable pageable);
为了支持分页,我们加入参数Pageable,改变了返回类型为Page<Book>. 增加@Boost 启动那些名字匹配搜索参数的书籍。
如果你需要第一页0-10个元素,如下:
Page<Book> booksPage = bookRepository.findByNameOrDescription(searchString,
searchString, new PageRequest(0, 10));.
下面是Page的使用:
只要用户给出一本书的名字,在不同分类中返回给他多少匹配给定这个名字的书,这称为faceted search,如下代码:
@Facet 我们告诉Spring数据返回查询Solr按类别排列的书籍,并返回五个。
调用:
new PageRequest(0, 10));
高亮实现:
调用: