自定义属性搜索建议

时间:2018-11-07 13:48:07

标签: intershop

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

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

重要的是,品牌建议应来自名为Brand 的自定义属性。

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

方法1-SF对象建议搜索

通过使用SF Object Suggest Search,我们几乎可以得到所需的东西。产品和类别建议正在按预期方式工作。问题在于品牌建议。根据{{​​3}},品牌建议来自ManufacturerName属性:

  

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

除了Intershop命名Brand这是一个非常糟糕的做法,而实际上ManufacturerName却是我们真正的问题是 我们所有的产品都有一个名为Brand的自定义属性,用于指定品牌,并且我们为产品的实际制造商使用默认的ManufacturerName字段。

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

文档还指定SFObjectSuggestSearch的缺点之一是:

  

一组有限的受支持属性的硬编码

这使我们相信,永远不可能以一种符合我们想要的方式修改SFObjectSuggestSearch。因此,我们尝试了方法2。

方法2-SFProduct搜索建议

通过使用SFProduct Search Suggest并将autosuggest属性添加到SFProductSearch产品索引中,我们可以检索到所需的所有属性。

这种方法的缺点是,所有创建的SolrSuggestResultItem对象都具有Unspecified类型,这使我们无法以一种很好的方式将产品,类别和品牌分组在一起。

documentation在这一点上非常糟糕/含糊不清:

  

搜索索引配置中建议索引中的自定义值   级别可以使用前缀“ SuggestType_”配置自定义值   然后是类型。

所以我们怀疑我们必须对SuggestType_做些事情,但似乎无法弄清楚。后台中的搜索索引配置选项似乎没有提供类似的功能。作为最后的选择,我们还尝试将更改直接添加到ISH-Config.xml中,但是每次构建搜索索引时,这些文件中的所有更改都会被覆盖。

摘要

  • 方法1不成功,因为它建议制造商而不是品牌。
  • 方法2不成功,因为返回的SolrSuggestResultItems的类型均为Unspecified

是否有任何一种方法可以使这两种方法一起使用?在这一点上,我们没有选择方法1或2的偏爱,因此将不胜感激为一个方法或一个更合适的方法提供指导。

1 个答案:

答案 0 :(得分: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进行更改时,配置不会被覆盖。