##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