solr 的使用方式
·name:指定域的名称
·type:指定域的类型
·indexed:是否索引
·stored:是否存储
·required:是否必须
·multiValued:是否多值
配置tomcat 中的动态域
solrHOME\collection1\confschema.xml
普通域
## 复制域 ## 动态域jar包
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-solr</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
配置文件
<solr:solr-server id="solrServer" url="http://127.0.0.1:8080/solr"></solr:solr-server>
<!-- 创建 spring 中需要使用的 sorlTemplate 模板-->
<bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate">
<constructor-arg ref="solrServer"></constructor-arg>
</bean>
先用工具类向数据库中添加想要的数据
@Autowired
private TbItemMapper tbItemMapper;
@Autowired
private SolrTemplate solrTemplate;
/**
* 倒入商品数据
*/
public void importItemData(){
TbItemExample tbItemExample = new TbItemExample();
// 向 tbItemExample 中添加条件
TbItemExample.Criteria criteria = tbItemExample.createCriteria();
// 添加条件 添加 状态为 1 的 数据
criteria.andStatusEqualTo("1");
List<TbItem> tbItems = tbItemMapper.selectByExample(tbItemExample);
for (int i = 0; i < tbItems.size(); i++) {
// 将 spec 中的 json 字符穿 转换成为 map 形式
Map map = JSON.parseObject(tbItems.get(i).getSpec());
// 给 带注解的 字段赋值 也就是 将 获取的数据 赋值 给 tomcat 中的 动态域 也就是 TbItem 类中的 specMap @Dunamic 动态域
tbItems.get(i).setSpecMap(map);
System.out.println(tbItems.get(i));
}
// 倒入 数据
solrTemplate.saveBeans(tbItems);
solrTemplate.commit();
查询数据
@Autowired
private SolrTemplate solrTemplate;
/**
* 在 service 层将数据 需要的数据进行过滤 然后并 将其 加入到 solr
* 中
* @param searchMap
* @return
*/
@Override
public Map<String, Object> search(Map searchMap) {
HashMap<String, Object> map = new HashMap<>();
Query query = new SimpleQuery();
// 添加查询条件
// 让 item——keywords 的 值为 指定值 域名 值
Criteria criteria1 = new Criteria("item_keywords").is(searchMap.get("keywords"));
query.addCriteria(criteria1);
ScoredPage<TbItem> tbItems = solrTemplate.queryForPage(query, TbItem.class);
map.put("rows",tbItems.getContent());