【发布时间】:2018-11-07 13:48:07
【问题描述】:
我们有检索3种搜索建议的需求:
- 产品建议
- 类别建议
- 品牌建议
这里需要注意的是,品牌建议应该来自名为Brand的自定义属性。
到目前为止,我们已经尝试了 2 种不同的方法,但都因不同的原因而失败:
方法 1 - SF 对象建议搜索
通过使用SF Object Suggest Search,我们几乎得到了我们需要的东西。产品和类别建议按预期工作。问题在于品牌建议。根据documentation,品牌建议来自ManufacturerName属性:
品牌建议是从 SFProductSearch 索引的 ManufacturerName 索引属性中收集的。
除了 Intershop 的一个非常糟糕的做法之外,将某些东西命名为 Brand 而实际上它是 ManufacturerName 我们真正的问题是
我们所有的产品都有一个名为 Brand 的自定义属性,用于指定品牌,我们使用默认的 ManufacturerName 字段作为产品的实际制造商。
我们想要实现的是从SFProductSearch 索引的Brand 索引属性而不是ManufacturerName 索引属性中收集品牌建议。
该文档还指出,SFObjectSuggestSearch 的缺点之一是它具有:
一组有限的硬编码支持属性
这让我们相信,永远不可能修改SFObjectSuggestSearch 使其行为符合我们想要的方式。所以我们尝试了方法2。
方法 2 - SF 产品搜索建议
通过使用SFProduct Search Suggest 并将自动建议属性添加到SFProductSearch 产品索引,我们能够检索我们需要的所有属性。
然而,这种方法的缺点是创建的所有SolrSuggestResultItem 对象都具有Unspecified 的类型,这使得我们无法以一种很好的方式将产品、类别和品牌组合在一起。
documentation 在这一点上的内容非常糟糕/含糊:
搜索索引配置中建议索引中的自定义值 level 可以配置带有前缀 SuggestType_ 的自定义值 后跟一个类型。
所以我们怀疑我们必须对SuggestType_ 做点什么,但我们似乎无法弄清楚。后台的搜索索引配置选项似乎没有提供类似的功能。作为最后的手段,我们还尝试直接对ISH-Config.xml 进行更改,但是每次构建搜索索引时这些文件中的任何更改都会被覆盖。
总结
- 方法 1 不成功,因为它建议的是制造商而不是品牌。
- 方法 2 不成功,因为返回的
SolrSuggestResultItems都具有Unspecified的类型。
有什么方法可以使用这两种方法中的任何一种吗?在这一点上,我们不偏爱方法 1 或 2,因此将不胜感激任何一种方法的解决方案,或对更合适方法的指导。
【问题讨论】:
标签: intershop