自定义属性搜索建议

Custom attribute search suggestions

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

  1. 产品建议
  2. 类别建议
  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 给某些东西命名 Brand 是一种非常糟糕的做法,而实际上 ManufacturerName 我们真正的问题是 我们所有的产品都有一个名为 Brand 的自定义属性,用于指定品牌,我们使用默认的 ManufacturerName 字段表示产品的实际制造商。

我们想要实现的是,品牌建议是从 SFProductSearch 索引的 Brand 索引属性中收集的,而不是从 ManufacturerName 索引属性中收集的。

文档还指出 SFObjectSuggestSearch 的缺点之一是它具有:

A limited hard-coded set of supported attributes

这让我们相信永远不可能修改 SFObjectSuggestSearch 以使其按照我们想要的方式运行。所以我们尝试了方法 2。

方法 2 - 顺丰产品搜索建议

通过使用 SFProduct Search Suggest 并将自动建议属性添加到 SFProductSearch 产品索引,我们能够检索我们需要的所有属性。

然而,这种方法的缺点是创建的所有 SolrSuggestResultItem 对象都具有 Unspecified 类型,这使得我们无法将产品、类别和品牌组合在一起不错的方式。

这一点上的documentation极其poor/vague如其所言:

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 没有偏好,因此非常感谢任何一个的解决方案或更合适的方法的指导。

回答我自己的问题:

经过一些实验后,我们通过修改方法 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 进行更改时不会覆盖配置。