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; }
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查出来的数据就是存进去的数据,不存在时区问题.所以不需要特殊处理
时间: 2024-10-13 02:33:37