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