spring-data-solr:第一步.基本po类与schema.xml文件的对应

spring-data-solr:第一步.基本po类与schema.xml文件的对应

参考代码:https://github.com/spring-projects/spring-data-solr-examples

SolrPo类:

package com.md.product.po.so;

import com.wzy.pomelo.base.beans.Po;
import org.apache.solr.client.solrj.beans.Field;
import org.springframework.data.annotation.Id;
import org.springframework.data.solr.core.mapping.Dynamic;


/**
 * 类描述:Solr索引Po类
 *
 * @author fengyong
 * @version 1.0
 * @since 1.0
 * Created by fengyong on 16/5/3 下午5:21.
 */
public class SolrProductIndex extends Po implements SearchableSolrProductIndexDefinition {
   
    /**
     * itemId
     */
    @Id
    @Field(ITEMID_FIELD_NAME)
    private String itemId;

    /**
     * 商品基本属性集合
     */
    @Dynamic
    @Field(FILTERQUERYITEMSPECMAP_FIELD_NAME)
    private Map<String, List<String>> filterQuerySpuAttrMap;

    /**
     * 商品基本属性集合
     */
    @Field(FILTERQUERYITEMSPECLIST_FIELD_NAME)
    private List<String> filterQuerySpuAttrList;

    /**
     * 商品品规属性集合
     */

    private Map<String, String> filterQueryItemSpecMap;

    /**
     * 商品品规属性集合
     */

    private List<String> filterQueryItemSpecList;
}

接口定义:

package com.md.product.po.so;

/**
 * 类描述:Po类常量,用于规定与schema中字段的统一性与常量定义
 *
 * @author fengyong
 * @version 1.0
 * @since 1.0
 * Created by fengyong on 16/5/3 下午5:22.
 */
public interface SearchableSolrProductIndexDefinition {
    String ITEMID_FIELD_NAME = "id";
    String FILTERQUERYITEMSPECMAP_FIELD_NAME = "filterQueryItem_*";
    String FILTERQUERYITEMSPECLIST_FIELD_NAME = "filterQueryItemList";
}


schema.xml文件定义:

<dynamicField name="filterQueryItem_*"  type="string"  indexed="true"   multiValued="true"/>

生成的索引大概长下面这个样子:


特殊字段说明:

本次应用的特殊字段只有动态字段filterQueryItem_*,与java中的map集合相对应

Map<String, List<String>> filterQuerySpuAttrMap;
filterQueryItem_*

单个动态字段可产生相对应的N个solr普通字段,每个普通字段的name为java中map集合的key

map中的value为list集合,与solr字段中属性multiValued相对应,意思为多值字段

SolrPo与schema.xml对应关系,理解动态字段的对应关系就可以了,别的字段对应只要数据类型相对应,就可以匹配成功,多值字段可以与String[]或者list<String>相对应.
顺便提一句在别的地方看到并且已经亲测的事实,solr八小时时区的问题,在solr管理界面中的数据是有八小时时区问题,但是使用solrJ或者spring查出来的数据就是存进去的数据,不存在时区问题.所以不需要特殊处理


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值