##Spring-Data-Solr入门
-
导入jar包
<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.12</version> </dependency>
2 .配置springdatasolr核心配置文件
<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>
3.创建实体类映射字段信息
实体类字段信息与solr配置文件schema.xml中域的值进行映射
@Field("items_image")
private String image;
4.实现索引的增加
solrTemplate.saveBean(); 添加---修改
solrTemplate.getById(); --- 根据主键查询
solrTemplate.deleteById(); --- 根据主键删除
solrTemplate.saveBeans(List); ----插入多条数据
SimpleQuery query = new SimpleQuery();
Criteria criteria = new Criteria(filedname).is(keywords);
criteria = query.addCriteria(criteria); ---- 多条件查询
ScoredPage<TbItem> tbItems = solrTemplate.queryForPage(query, TbItem.class); --- 分页查询
SolrDataQuery query1 = new SimpleQuery("*:*");
solrTemplate.delete(query1);
solrTemplate.commit(); ----- 删除所有
动态域的实现(spec)
1.配置动态域例
<dynamicField name="item_spec_*" type="string" indexed="true" stored="true" />
2.改变实体类属性
@Dynamic
@Field("item_spec_*")
private Map<String,String> specMap;
3.数据封装时,把 specMap 数据转换成map保存即可
Map specMap = JSON.parseObject(item.getSpec(), Map.class);//从数据库中提取规格json字符串转换为map