-
添加依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-solr</artifactId> </dependency> </dependencies> -
编写实体类(省略了getset)
@SolrDocument(collection = "testcore") public class Menu { @Id @Field("id") private Long menu_id; @Field("myfield") private String menu_name; } -
编写springboot入口类并启动
@SpringBootApplication public class SpringDataSolrApp { public static void main(String[] args) { SpringApplication.run(SpringDataSolrApp.class,args); } } -
编写测试方法
@SpringBootTest(classes = SpringDataSolrApp.class) @RunWith(SpringRunner.class) public class TestSpringdataSolr { @Autowired private SolrTemplate solrTemplate; private String coreName = "testcore"; @Test public void testUpdate() { SolrInputDocument document = new SolrInputDocument(); document.addField("id", 10010); document.addField("myfield", "中国联通"); UpdateResponse updateResponse = solrTemplate.saveDocument(coreName, document); System.out.println(updateResponse.getStatus() == 0 ? "保存成功" : "保存失败"); solrTemplate.commit(coreName); } @Test public void testDelete(){ //根据id 删除 UpdateResponse updateResponse = solrTemplate.deleteByIds(coreName, "2000"); System.out.println(updateResponse.getStatus() == 0 ? "删除成功" : "删除失败"); // 根据条件删除 Query query = new SimpleQuery(); query.addCriteria(Criteria.where("myfield").is("系统")); UpdateResponse updateResponse1 = solrTemplate.delete(coreName, query); System.out.println(updateResponse1.getStatus() == 0 ? "删除成功" : "删除失败"); solrTemplate.commit(coreName); } @Test public void query(){ // 分页条件 Query query = new SimpleQuery(); query.addCriteria(Criteria.where("myfield").is("管理")); // 从哪条开始查询 & 每页数据条数 query.setOffset(0L); query.setRows(3); // 降序 query.addSort(Sort.by(Sort.Direction.DESC,"id")); Page<Menu> pages = solrTemplate.query(coreName, query, Menu.class); List<Menu> menus = pages.getContent(); for (Menu menu : menus) { System.out.println(menu); } } @Test public void testHighLighting(){ HighlightQuery query = new SimpleHighlightQuery(); query.addCriteria(Criteria.where("myfield").is("菜单")); HighlightOptions options = new HighlightOptions(); options.addField("myfield"); options.setSimplePostfix("<span style='color:red'>"); options.setSimplePostfix("</span>"); query.setHighlightOptions(options); // 用户存储高亮数据 List<Menu> result =new ArrayList<>(); HighlightPage<Menu> menus = solrTemplate.queryForHighlightPage(coreName, query, Menu.class); // 获取处理高亮的对象 List<HighlightEntry<Menu>> highlighted = menus.getHighlighted(); for (HighlightEntry<Menu> menuHighlightEntry : highlighted) { // 没有高亮的数据 Menu entity = menuHighlightEntry.getEntity(); // 高亮数据 List<HighlightEntry.Highlight> highlights = menuHighlightEntry.getHighlights(); for (HighlightEntry.Highlight highlight : highlights) { String hlresult = highlight.getSnipplets().get(0); entity.setMenu_name(hlresult); System.out.println(entity); result.add(entity); } } for (Menu menu : result) { System.out.println(menu); } }