自定义属性搜索建议
Custom attribute search suggestions
我们需要检索 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 不成功,因为返回的
SolrSuggestResultItems
都具有 Unspecified
类型。
有什么方法可以使这两种方法都起作用吗?在这一点上,我们对方法 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
进行更改时不会覆盖配置。
我们需要检索 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 不成功,因为返回的
SolrSuggestResultItems
都具有Unspecified
类型。
有什么方法可以使这两种方法都起作用吗?在这一点上,我们对方法 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
进行更改时不会覆盖配置。