代码之家  ›  专栏  ›  技术社区  ›  Bas de Groot

自定义属性搜索建议

  •  2
  • Bas de Groot  · 技术社区  · 6 年前

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

    1. 类别建议

    Brand .

    方法1-SF对象建议搜索

    通过使用 SF Object Suggest Search 我们几乎得到了我们需要的。产品和类别建议按预期工作。问题在于品牌建议。根据 documentation 品牌建议来自 ManufacturerName 属性:

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

    而且这是一个非常糟糕的做法,从Intershop命名的东西 品牌 而实际上是 我们真正的问题是 我们所有的产品都有一个名为 品牌 它指定了品牌,我们使用默认值 制造商名称 产品实际制造商的字段。

    我们想要实现的是,品牌建议是从 的索引属性 SFProductSearch 索引而不是从 制造商名称 索引属性。

    文档还指定 SFObjectSuggestSearch

    支持的属性的有限硬编码集

    这使我们相信,永远不可能修改 以这样一种方式,它的行为方式是我们想要的。所以我们尝试了方法2。

    方法2-产品搜索建议

    通过使用 SFProduct Search Suggest SF产品搜索 产品索引我们能够检索所有我们需要的属性。

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

    这个 文档

    搜索索引配置时建议索引中的自定义值 级别可以使用前缀SuggestType配置自定义值_ 然后是一个类型。

    所以我们怀疑我们和 SuggestType_ ISH-Config.xml 但每次生成搜索索引时,这些文件中的任何更改都会被覆盖。

    摘要

    • 方法1是不成功的,因为它建议制造商而不是品牌。
    • 方法2不成功,因为返回 SolrSuggestResultItems 都有一种 .

    有没有办法让这两种方法中的任何一种起作用?在这一点上,我们对方法1或2没有偏好,因此对其中任何一种的解决方案,或对更合适的方法的指导,都将不胜感激。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Bas de Groot    6 年前

    经过一些实验后,我们对方法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 后来。

    推荐文章