springDate Solr入门案例

先导入jar包

<dependencies> 
 	<dependency> 
 	    <groupId>org.springframework.data</groupId> 
 	    <artifactId>spring-data-solr</artifactId> 
 	    <version>1.5.5.RELEASE</version> 
 	</dependency>  
 	<dependency> 
 	 	<groupId>org.springframework</groupId> 
 	 	<artifactId>spring-test</artifactId> 
 	 	<version>4.2.4.RELEASE</version> 
 	</dependency> 
 	<dependency> 
 	 	<groupId>junit</groupId> 
 	 	<artifactId>junit</artifactId> 
 	 	<version>4.9</version> 
 	</dependency> 
  </dependencies> 

添加配置文件applicationContext-solr.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 
 	xmlns:context="http://www.springframework.org/schema/context" 
 	xmlns:solr="http://www.springframework.org/schema/data/solr" 
 	xsi:schemaLocation="http://www.springframework.org/schema/data/solr  
    	http://www.springframework.org/schema/data/solr/spring-solr-1.0.xsd  	 
    		http://www.springframework.org/schema/beans  
 	 	http://www.springframework.org/schema/beans/spring-beans.xsd 
 	 	http://www.springframework.org/schema/context  
 	 	http://www.springframework.org/schema/context/spring-context.xsd"> 
 	<!-- solr服务器地址 --> 
 	<solr:solr-server id="solrServer" url="http://127.0.0.1:8080/solr" /> 
 	<!-- solr模板,使用solr模板可对索引库进行CRUD的操作 --> 
 	<bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate"> 
 	 	<constructor-arg ref="solrServer" /> 
 	</bean> 
</beans> 

实体类field后面的域值要和配置文件中的域值一样

如果属性与配置文件定义的域名称不一致,需要在注解中指定域名称。

	@Field 
    private Long id; 
 
 	@Field("item_title") 
    private String title; 
 	     
    @Field("item_price") 
	private BigDecimal price;  
    @Field("item_image") 
    private String image; 
 
    @Field("item_goodsid") 
    private Long goodsId; 
 
    @Field("item_category") 
    private String category; 
 
    @Field("item_brand") 
    private String brand; 
 
    @Field("item_seller") 
    private String seller; ....... 
    get  set  方法.......................

创建测试类

@RunWith(SpringJUnit4ClassRunner.class)  //使用JUnit4 
@ContextConfiguration(locations="classpath:applicationContext-solr.xml")    //扫加载配置文件
public class TestTemplate { 
 
 	@Autowired 
 	private SolrTemplate solrTemplate; 
Test
 	  	@Text	 
 	  	//添加
 	public void testAdd(){  	 	
 	TbItem item=new TbItem(); 
 	 	item.setId(1L); 
 	 	item.setBrand("华为"); 
 	 	item.setCategory("手机"); 
 	 	item.setGoodsId(1L); 
 	 	item.setSeller("华为2号专卖店"); 
 	 	item.setTitle("华为Mate9"); 
 	 	item.setPrice(new BigDecimal(2000));  	 
 	 	solrTemplate.saveBean(item); 
 	 	solrTemplate.commit(); 
 	} 
} 

按主键查询

@	Test	 
	
public void testFindOne(){ 
 	TbItem item = solrTemplate.getById(1, TbItem.class); 
 	System.out.println(item.getTitle()); 
} 

按主键删除

@Test 
public void testDelete(){ 
 	solrTemplate.deleteById("1"); 
 	solrTemplate.commit(); 
} 

分页查询

首先循环插入 100 条测试数据 
 	@Test 
 	public void testAddList(){ 
 	 	List<TbItem> list=new ArrayList(); 
 	 	 
 	 	for(int i=0;i<100;i++){  	 	 	TbItem item=new TbItem(); 
 	 	 	item.setId(i+1L); 
 	 	 	item.setBrand("华为"); 
 	 	 	item.setCategory("手机"); 
 	 	 	item.setGoodsId(1L); 
		 	item.setSeller("华为2号专卖店"); 
			item.setTitle("华为Mate"+i); 
			item.setPrice(new BigDecimal(2000+i));  
			list.add(item); 
			}  
			solr	Template.saveBeans(list); 
			solrTemplate.commit(); 
 	} 	

编写分页查询测试代码:

 	@Test 
testPageQuery
 	public void 	(){ 
 	 	Query query=new SimpleQuery("*:*"); 
 	 	query.setOffset(20);//开始索引(默认0) 
 	 	query.setRows(20);//每页记录数(默认10) 
 	 	ScoredPage<TbItem> page = solrTemplate.queryForPage(query, TbItem.class); 
 	 	System.out.println("总记录数:"+page.getTotalElements());  	 	List<TbItem> list = page.getContent(); 
 	 	showList(list); 
 	}  
 	//显示记录数据 
 	private void showList(List<TbItem> list){  	 
item
 	 	for(TbItem 	:list){ 
 	 	 	System.out.println(item.getTitle() +item.getPrice()); 
 	 	}  	 
 	} 

条件查询

 Criteria 用于对条件的封装: 
@Test 
 	public void testPageQueryMutil(){  
 	 	Query query=new SimpleQuery("*:*"); 
 	 	Criteria criteria=new Criteria("item_title").contains("2"); 
 	 	criteria=criteria.and("item_title").contains("5");  	 
 	 	query.addCriteria(criteria); 
 	 	//query.setOffset(20);//开始索引(默认0) 
 	 	//query.setRows(20);//每页记录数(默认10) 
 	 	ScoredPage<TbItem> page = solrTemplate.queryForPage(query, TbItem.class); 
list
 	 	System.out.println("总记录数:"+page.getTotalElements());  	 	List<TbItem> 	 = page.getContent(); 
list
 	 	showList(	); 
 	} 

删除全部数据

@Test 
public void testDeleteAll(){  	 	Query query=new SimpleQuery("*:*"); 
 	solrTemplate.delete(query); 
 	solrTemplate.commit(); 
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值