有谁知道如何在产品列表页面上显示的 Facet Navigation 中添加其他属性?到目前为止我只能选择价格范围,但是我想添加品牌和其他过滤器,您知道如何通过 hMC 维护它吗?我认为这与 solr 配置有关,但我对 hybris 还很陌生...
5 回答
最好的方法是查看开箱即用的内容,例如在电子商店下,打开文件/electronicsstore/resources/electronicsstore/import/sampledata/stores/electronics/solr.impex
在里面你会发现 facet 定义,例如这是 Megapixles 的 facet 定义:
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=false];facetType(code);facetSort(code);priority;visible;fieldValueProvider;customFacetSortProvider;rangeSets(name);$classAttributeAssignment
;electronicsProductType;Megapixel, 63 ;double;; ; ; ;true;MultiSelectOr;Custom;1000;true;commerceClassificationPropertyValueProvider;numericFacetSortProviderDesc;MegaPixelRange;57:::Megapixel, 63::::
您需要记住的是,对于除文字/原子之外的任何自定义类型,您都需要创建自己的提供程序。对于每个基本的文字/原子类型(字符串、双精度、整数、布尔值),commerceClassificationPropertyValueProvider 就足够了。
有两种方法可以做到这一点 1.Impex:转到 solr.impex 文件并将 facet(=true) 属性添加到 SolrIndexedProperty 类型标题 例如:INSERT_UPDATE SolrIndexedProperty;solrIndexedType(identifier)[unique=true];name[unique=true];type(code);sortableType(code);currency[default=false];localized[default=false];multiValue[default=错误的]; facet[default=false] ;facetType(code);facetSort(code);priority;visible;fieldValueProvider;customFacetSortProvider;rangeSets(name);$classAttributeAssignment ;electronicsProductType;Megapixel, 63 ;double;; ; ; ; true ;MultiSelectOr;Custom;1000;true;commerceClassificationPropertyValueProvider;numericFacetSortProviderDesc;MegaPixelRange;57:::Megapixel, 63:::: 2.hmc: hmc --> System --> Facet Search --> SolrItemType --> 选择 solritemtype --> 添加 solrindexproperties --> 选择 facet 复选框为 true
要添加更多产品属性,如品牌、名称、any_other_attribute,您应该转到:
HMC>系统>构面搜索>索引类型
. 用空白字段搜索。
现在选择<Index TYPE>
像**产品。现在您可以在表格中查看所有产品属性。它们周围有一些复选框。
这些是产品内部属性的搜索设置。
如果您有 hybris wiki 访问权限,那么您可以轻松完成此操作。在商业线索中,他们已经涵盖了方面搜索。请看一下。 https://wiki.hybris.com/display/R5T/Tweaking+SolR+Attributes+and+Facets
不幸的是,您不能仅仅通过 HMC 将新的solrIndexedProperty添加到solrIndexedType并希望它能够工作,它不会工作,因为您必须维护一些其他点:
- 如果您的新属性是一个复杂的对象,例如(Brand、Price、Unite...),您必须创建一个Value Provider来将该对象转换为简单的原始数据(string、int、double...)并发送它到 solr 被索引,例如 Brand to Brand.name 和 Price to Price.formattedValue...
- 然后,您必须通过FacetPopulator将新的solrIndexedProperty值公开到前端。