我们需要检索 3 种搜索建议:
- 产品建议
- 类别建议
- 品牌建议
此处需要注意的是,品牌建议应来自名为 Brand
的自定义属性。
到目前为止,我们已经尝试了两种不同的方法,但由于不同的原因均未成功:
方法 1 - SF 对象建议搜索
通过使用SF Object Suggest Search
,我们几乎得到了我们需要的东西。产品和类别建议正在按预期工作。问题出在品牌建议上。根据documentation品牌建议来自 ManufacturerName
属性:
The brand suggestions are collected from the ManufacturerName index attribute of the SFProductSearch index.
除此之外,Intershop 命名一些品牌
而实际上是ManufacturerName
是一种非常糟糕的做法,我们真正的问题是
我们的所有产品都有一个名为 Brand
的自定义属性,用于指定品牌,并且我们使用默认的 ManufacturerName
字段来表示产品的实际制造商。
我们希望实现的是,品牌建议是从 SFProductSearch
索引的 Brand
索引属性收集的,而不是从 ManufacturerName
收集的> 索引属性。
文档还指出,SFObjectSuggestSearch
的缺点之一是它具有:
A limited hard-coded set of supported attributes
这让我们相信,永远不可能修改 SFObjectSuggestSearch
使其按照我们想要的方式运行。所以我们尝试了方法2。
方法 2 - SF 产品搜索建议
通过使用SFProduct Search Suggest
并将自动建议属性添加到SFProductSearch
产品索引中,我们能够检索我们需要的所有属性。
这种方法的缺点是,创建的所有 SolrSuggestResultItem
对象都具有 Unspecified
类型,这使得我们无法对产品、类别和品牌以一种很好的方式结合在一起。
documentation在这一点上非常糟糕/模糊,因为它写道:
The custom values in the suggest index at search index configuration level can configure custom values with the prefix SuggestType_ followed by a type.
因此,我们怀疑必须对 SuggestType_
做一些事情,但我们似乎无法弄清楚。后台的搜索索引配置选项似乎没有提供类似的东西。作为最后的手段,我们还尝试直接对 ISH-Config.xml 进行更改,但每次构建搜索索引时,这些文件中的任何更改都会被覆盖。
摘要
- 方法 1 不成功,因为它建议制造商而不是品牌。
- 方法 2 不成功,因为返回的
SolrSuggestResultItems
的类型均为Unspecified
。
有什么方法可以使用这两种方法吗?目前,我们对方法 1 或方法 2 没有偏好,因此我们将非常感谢其中任何一种的解决方案,或者更合适的方法的指导。
最佳答案
回答我自己的问题:
经过一些实验,我们对方法 1 进行了修改,使其发挥作用。
在 ISH-Config.xml
中,我们更改了以下内容:
<custom-value name="ObjectSuggestType_brand" type="string">
<value>ManufacturerName</value>
</custom-value>
对此:
<custom-value name="ObjectSuggestType_brand" type="string">
<value>Brand</value>
</custom-value>
通过此配置,现在可以从 SFProductSearch
索引的 Brand
索引属性而不是从 ManufacturerName
索引属性收集品牌建议。
通过在进行此更改后直接重新部署服务器,当您稍后对 SF 对象建议搜索
进行更改时,配置不会被覆盖。
关于intershop - 自定义属性搜索建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53190766/