自定义属性构面未显示在店面中?

2020-08-20 07:19发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我们在产品模型中添加了一...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我们在产品模型中添加了一些自定义属性。

 
  
  

在solr.impex文件中配置了上述属性,如下所示

#定义价格范围集
 INSERT_UPDATE SolrValueRangeSet; name [unique = true];限定符;类型; solrValueRanges(⦥ValueRefID)
 ; lengthRange; length; double; lengthRangeRef1,lengthRangeRef2,lengthRangeRef3,lengthRangeRef4,lengthRangeRef5
 #定义价格范围
 INSERT_UPDATE SolrValueRange;⦥ValueRefID; solrValueRangeSet(name)[unique = true]; name [unique = true]; from; to
 ; lengthRangeRef1; lengthRange;  0-49.99;  0;  49.99
 ; lengthRangeRef2; lengthRange;  50-99.99;  50;  99.99
 ; lengthRangeRef3; lengthRange;  100-149.99;  100;  149.99
 ; lengthRangeRef4; lengthRange;  150-199.99;  150;  199.99
 ; lengthRangeRef5; lengthRange; 200-300; 200;  300
 #其他构面属性
 INSERT_UPDATE SolrIndexedProperty; solrIndexedType(identifier)[unique = true]; name [unique = true]; type(code); sortableType(code); currency [default = false]; localized [default = false]; multiValue [default = false]  ; facet [default = true]; facetType(code); facetSort(code); priority; visible; useForSpellchecking [default = false]; useForAutocomplete [default = false]; fieldValueProvider; facetDisplayNameProvider; customFacetSortProvider; topValuesProvider; rangeSets(name)
 ; $ solrIndexedType; 长度;双;  ;  ; 真实 ; MultiSelectOr; Alpha; 10000; true;  ;  ; bobstProductSizeValueProvider ;;; defaultTopValuesProvider; lengthRange

 #方面搜索查询属性
 INSERT_UPDATE SolrSearchQueryProperty; indexedProperty(name,solrIndexedType(identifier))[unique = true]; facet [default = true]; facetType(code); priority; facetDisplayNameProvider; facetSortProvider; facetTopValuesProvider; includeInResponse [default = true]; searchQueryTemplate(name,indexed  (标识符))[unique = true] [default = DEFAULT:$ solrIndexedType]
 ; length:$ solrIndexedType ;; MultiSelectOr; 10000 ;;;;; 

值提供者为:

公共类ProductLengthValueProvider扩展了AbstractPropertyFieldValueProvider
 实现FieldValueProvider,可序列化{
 私有静态最终Logger logger = LoggerFactory.getLogger(BobstProductLengthValueProvider.class);
 私有FieldNameProvider fieldNameProvider;
 @Override
 public Collection  getFieldValues(final IndexConfig indexConfig,final IndexedProperty indexedProperty,
 最终对象模型)引发FieldValueProviderException {
 if(ProductModel的模型实例){
 最终的ProductModel产品=(ProductModel)模型;
 最终List  fieldValues = createFieldValue(product,indexConfig,indexedProperty);
 返回fieldValues;
 }其他{
 抛出新的FieldValueProviderException("无法获得产品模型的长度");
 }
 }
 受保护的List  createFieldValue(最终ProductModel模型,最终IndexConfig indexConfig,
 最终的IndexedProperty indexedProperty){
 最终List  fieldValues = new ArrayList ();
 最终的字符串限定符= indexedProperty.getName();
 对象结果= null;
 结果= modelService.getAttributeValue(model,qualifier);
 logger.info("长度属性值:...................." +结果+"对于产品代码:" + model.getCode());
 if(结果!= null){
 addFieldValues(fieldValues,indexedProperty,null,结果);
 }
 返回fieldValues;
 }
 受保护的void addFieldValues(最终列表 fieldValues,最终IndexedProperty indexedProperty,
 最终的LanguageModel语言,最终的Object值){
 最终的Collection  fieldNames = getFieldNameProvider()。getFieldNames(indexedProperty,
 (语言== null)?  null:language.getIsocode());
 for(最终字符串fieldName:fieldNames){
 fieldValues.add(new FieldValue(fieldName,value));
 }
 }
 公共FieldNameProvider getFieldNameProvider(){
 返回fieldNameProvider;
 }
 public void setFieldNameProvider(final FieldNameProvider fieldNameProvider){
 this.fieldNameProvider = fieldNameProvider;
 }
 } 

我已经导入了上面的脚本,并从后台运行了solr索引。 同时将执行索引配置的值提供程序并成功建立索引。 但是,自定义属性构面未显示在店面中。

如果我错过了这里,请告诉我。

任何人都可以帮忙。 如果提供的示例代码将不胜感激。

提前谢谢!

致谢

Praveen

2条回答
哎,真难
2020-08-20 07:44

嗨伊戈尔,

非常感谢您的答复。 实际上,我们发现了一个问题,如果索引属性没有sortProvider,那么它将在从solr检索范围的同时清除所有范围值。 因此,我们使用了OTB排序提供程序,现在它可以按预期运行。

是的,您是对的。 我们可以使用' ModelPropertyFieldValueProvider ',但是如果产品模型属性没有值,则返回的空指针异常,因此,我们使用自定义值提供程序进行了空检查。

此致

Praveen

一周热门 更多>