我们需要检索3种搜索建议:
重要的是,品牌建议应来自名为Brand
的自定义属性。
到目前为止,我们已经尝试了2种不同的方法,但由于不同的原因均未成功:
通过使用SF Object Suggest Search
,我们几乎可以得到所需的东西。产品和类别建议正在按预期方式工作。问题在于品牌建议。根据{{3}},品牌建议来自ManufacturerName
属性:
品牌建议是从SFProductSearch索引的ManufacturerName索引属性中收集的。
除了Intershop命名Brand
这是一个非常糟糕的做法,而实际上ManufacturerName
却是我们真正的问题是
我们所有的产品都有一个名为Brand
的自定义属性,用于指定品牌,并且我们为产品的实际制造商使用默认的ManufacturerName
字段。
我们要实现的是,品牌建议是从Brand
索引的SFProductSearch
索引属性中收集的,而不是从ManufacturerName
索引属性中收集的。
文档还指定SFObjectSuggestSearch
的缺点之一是:
一组有限的受支持属性的硬编码
这使我们相信,永远不可能以一种符合我们想要的方式修改SFObjectSuggestSearch
。因此,我们尝试了方法2。
通过使用SFProduct Search Suggest
并将autosuggest属性添加到SFProductSearch
产品索引中,我们可以检索到所需的所有属性。
这种方法的缺点是,所有创建的SolrSuggestResultItem
对象都具有Unspecified
类型,这使我们无法以一种很好的方式将产品,类别和品牌分组在一起。
documentation在这一点上非常糟糕/含糊不清:
搜索索引配置中建议索引中的自定义值 级别可以使用前缀“ SuggestType_”配置自定义值 然后是类型。
所以我们怀疑我们必须对SuggestType_
做些事情,但似乎无法弄清楚。后台中的搜索索引配置选项似乎没有提供类似的功能。作为最后的选择,我们还尝试将更改直接添加到ISH-Config.xml
中,但是每次构建搜索索引时,这些文件中的所有更改都会被覆盖。
SolrSuggestResultItems
的类型均为Unspecified
。是否有任何一种方法可以使这两种方法一起使用?在这一点上,我们没有选择方法1或2的偏爱,因此将不胜感激为一个方法或一个更合适的方法提供指导。
答案 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
进行更改时,配置不会被覆盖。