【问题标题】:Disable search for the products on the Hybris front end having a specific attribute value禁止在 Hybris 前端搜索具有特定属性值的产品
【发布时间】:2018-02-28 18:52:46
【问题描述】:

假设我有一个要求,我不想在 Hybris 前端搜索具有特定属性值的产品。即使 Hybris SOLR index 中存在以下产品。

如何解决这个问题?

【问题讨论】:

    标签: solr hybris


    【解决方案1】:

    应将哪些产品编入索引由灵活的搜索查询定义。

    您可以通过导航到System/Facet Search/Indexed Typeshmc/backoffice 中找到它们。选择您的索引类型。在那里您可以找到完整和更新的查询。

    完整的查询由Full SolR Indexer CronJob 使用,它每晚在默认情况下运行并完全重新创建 SolR 索引。更新查询同样被 Update SolR Indexer CronJob 使用,默认情况下每小时运行一次,并且只更新其间已更改的产品。因此,您会在更新查询中找到类似 WHERE {sl:modifiedtime} >= ?lastIndexTime 的内容,而完整查询中缺少该内容。

    您可以根据需要以各种方式更改查询。例如。假设您的查询是:

    SELECT {pk} FROM {Product}
    

    改成

    SELECT {pk} FROM {Product} WHERE {myAttribute} LIKE 'index this product'
    

    PS:在您关联的 Facet Search Config (System/Facet Search/Facet Search Config) 上找到 Solr Indexer Cronjobs

    PPS:还有一个删除查询,您可以在其中定义应从SolR 索引中删除的产品。

    【讨论】:

    • 这是正确的做法,但我认为这里的问题是产品已经在索引中,可能我们想在其他研究选项中使用它们。
    • @johannesNolte,这里的监听器概念会更好吗?
    • @Nomade 当您在索引中有产品时,您不想再在那里,只需运行完整的 SolR Indexer Cronjob,所有内容都将从索引中删除,所有产品都将从您的完整的查询将被添加到它。当您的查询排除了您不希望在索引中包含的产品时,它们将在完整索引后消失。
    • @Rachit 我不熟悉监听器的概念。你能给我更多的信息吗?
    【解决方案2】:

    我可以想到两种使用 Solr 在前端实现产品可见性的方法。

    1.仅索引您需要的那些产品。正如@Johannes Nolte 所说,调整完整和更新索引查询

    这里的问题是这种方式完全从搜索中删除产品。如果有需要根据其他属性显示/隐藏产品的要求,则不能这样做。

    其他方式

    2。在向 Solr 服务器点击实际 Solr 查询之前添加搜索过滤器

    假设您要根据 productType(Type A & Type B)显示/隐藏产品

    用户 1 有资格查看 A 类产品,用户 2 有资格查看 B 类产品。

    您需要首先索引您的 productType 属性并使其 facet=true。确保您选择了 visible=false,以便此属性在店面的构面中不可见。

    查看 OOTB SearchFiltersPopulator 类,您将了解我们如何在发送到 Solr 服务器进行搜索之前在 Solr 查询中添加动态过滤器。

    类似地,您可以创建自己的 filterPopulator,例如MySearchFiltersPopulator,其中包含您的自定义可见性逻辑。

    if Current_User is User 1
      target.getSearchQuery().addFacetValue("productType", "Type A");
    else Current_User is User 2
      target.getSearchQuery().addFacetValue("productType", "Type B");
    

    最后在commerceSearchQueryPageableConverter链中添加自定义填充器。

    <bean parent="modifyPopulatorList">
        <property name="list" ref="commerceSearchQueryPageableConverter" />
        <property name="add" ref="mySearchFiltersPopulator" />
    </bean>
    

    【讨论】:

    • 非常感谢您的回答。我有一个查询:SearchRestriction 在这里有用吗?
    • SearchRestriction 我猜在 Solr 中不起作用。只需在完全索引时检查查询是否受到搜索限制的影响。
    • 非常感谢,但如果属性不是一个方面,那么我们如何继续前进?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 2018-08-03
    • 2018-10-11
    相关资源
    最近更新 更多