点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我们在产品模型中添加了一...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供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 CollectiongetFieldValues(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
嗨伊戈尔,
非常感谢您的答复。 实际上,我们发现了一个问题,如果索引属性没有sortProvider,那么它将在从solr检索范围的同时清除所有范围值。 因此,我们使用了OTB排序提供程序,现在它可以按预期运行。
是的,您是对的。 我们可以使用' ModelPropertyFieldValueProvider ',但是如果产品模型属性没有值,则返回的空指针异常,因此,我们使用自定义值提供程序进行了空检查。
此致
Praveen
一周热门 更多>