2

我们需要检索 3 种搜索建议:

  1. 产品建议
  2. 类别建议
  3. 品牌建议

这里需要注意的是,品牌建议应该来自一个名为 的自定义属性Brand

到目前为止,我们已经尝试了 2 种不同的方法,但由于不同的原因均未成功:

方法 1 - SF 对象建议搜索

通过使用SF Object Suggest Search我们几乎得到了我们需要的东西。产品和类别建议按预期工作。问题在于品牌建议。根据文档,品牌建议来自ManufacturerName属性:

品牌建议是从 SFProductSearch 索引的 ManufacturerName 索引属性中收集的。

除了 Intershop 的一个非常糟糕的做法之外,命名某些东西Brand实际上是ManufacturerName我们真正的问题是我们所有的产品都有一个名为的自定义属性Brand来指定品牌,并且我们使用ManufacturerName产品的实际制造商的默认字段.

我们想要实现的是,品牌建议是从索引的索引属性中收集的,BrandSFProductSearch不是从索引属性中收集的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,因此将不胜感激任何一种方法的解决方案,或对更合适方法的指导。

4

1 回答 1

3

回答我自己的问题:

经过一些实验,我们通过对方法 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>

使用此配置,现在从索引的Brand索引属性SFProductSearch而不是从索引属性收集品牌建议ManufacturerName

SF Object Suggest Search通过在进行此更改后直接重新部署服务器,当您对稍后 进行更改时,配置不会被覆盖。

于 2018-11-08T12:44:07.537 回答