【问题标题】:Custom attribute search suggestions自定义属性搜索建议
【发布时间】:2018-11-07 13:48:07
【问题描述】:

我们有检索3种搜索建议的需求:

  1. 产品建议
  2. 类别建议
  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


    【解决方案1】:

    回答我自己的问题:

    经过一些实验,我们通过修改方法 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 Object Suggest Search 时,配置不会被覆盖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多