aligent/magento2-fredhopper-indexer

从 Magento 到 Fredhopper 索引和推送数据

安装: 2,357

依赖: 0

建议者: 0

安全: 0

星级: 1

关注者: 5

分支: 0

开放问题: 3

类型:magento2-module

3.2.6 2022-11-28 04:10 UTC

README

概述

此模块旨在用用于将产品数据导出到 Fredhopper 的索引器替换核心 Magento 2 目录搜索索引器 (catalogsearch_fulltext)。

架构

  • 新数据库表,fredhopper_product_data_index
    • 以 JSON 格式存储产品和变体属性数据
  • 新的搜索引擎,fredhopper,用于替换 Elasticsearch (或其他)。
    • 注意,搜索功能不属于此模块,应由其他模块(例如 Aligent_DataProxy)处理。此模块仅关注从 Magento 到 Fredhopper 的数据流。
  • 3 个新的 cron 作业用于将数据导出到 Fredhopper。所有三个作业都使用 JSON 数据格式。
    • fredhopper_full_export - 导出所有产品/变体的当前属性数据。这还将导出有关属性的元信息。
    • fredhopper_incremental_export - 导出自上次运行以来已更改的产品/变体。
      • 此作业添加到 index cron 组,因此它将不会受到持续索引过程的影响。
    • fredhopper_suggest_export - 导出用于 '即时搜索' 功能的数据。

配置

此模块提供了一些可配置的设置,用于控制发送到 Fredhopper 的数据和格式。

  • 使用变体产品吗?
    • 是否应将变体产品单独发送,还是将它们的数据聚合并发送给父产品?
  • 产品级别属性
    • 哪些属性在产品级别发送,属性类型以及是否附加网站变体。
      • 只有符合某些标准(例如可搜索、在前端可见等)的属性才能被选中。
  • 变体级别属性
    • 哪些属性在变体级别发送(如果使用变体产品)或聚合到父产品。
  • 价格属性
    • 按站点/按客户群体发送价格属性?包括最小/最大价格?
  • 库存属性
    • 发送库存指示器和/或库存计数?
  • 产品年龄属性
    • 发送指示产品是否为新产品以及在线天数的属性?
  • 允许/不允许的搜索词
    • 强制或阻止即时搜索功能中的某些搜索结果。
  • 定时任务计划
    • 如果需要,更改每个定时任务的计划。

定制

模块中有多个定制点,允许添加/修改数据。

  • 附加字段提供者
    • 提供带有一些常用字段的虚拟类型,additionalFieldsProviderForFredhopper。根据需要可以添加实现 \Magento\AdvancedSearch\Model\Adapter\DataMapper\AdditionalFieldsProviderInterface 的附加类。
<virtualType name="additionalFieldsProviderForFredhopper" type="Magento\AdvancedSearch\Model\Adapter\DataMapper\AdditionalFieldsProvider">
    <arguments>
        <argument name="fieldsProviders" xsi:type="array">
            <item name="categories" xsi:type="object">Aligent\FredhopperIndexer\Model\Indexer\Data\CategoryFieldsProvider</item>
            <item name="prices" xsi:type="object">Aligent\FredhopperIndexer\Model\Indexer\Data\PriceFieldsProvider</item>
            <item name="stock" xsi:type="object">Aligent\FredhopperIndexer\Model\Indexer\Data\StockFieldsProvider</item>
            <item name="images" xsi:type="object">Aligent\FredhopperIndexer\Model\Indexer\Data\ImageFieldsProvider</item>
            <item name="age" xsi:type="object">Aligent\FredhopperIndexer\Model\Indexer\Data\AgeFieldsProvider</item>
        </argument>
    </arguments>
</virtualType>
  • 文档预处理/后处理程序
    • \Aligent\FredhopperIndexer\Model\Indexer\DataHandler 类有两个参数,documentPreProcessorsdocumentPostProcessors,它们处理实现 \Aligent\\FredhopperIndexer\Api\Indexer\Data\DocumentProcessorInterface 的类数组。
      • 这些将在整个“处理”文档之前和之后(即所有属性信息添加后)运行。因此,这是一个处理任何与产品整体相关的自定义聚合或功能(而不是单个属性)的好地方。
  • 元数据
    • 通过代码添加的自定义属性需要添加到发送给Fredhopper的元信息中。这是通过向\Aligent\FredhopperIndexer\Helper\CustomAttributeConfig类的customAttributeData参数添加来完成的。
<type name="Aligent\FredhopperIndexer\Helper\CustomAttributeConfig">
    <arguments>
        <argument name="customAttributeData" xsi:type="array">
            <item name="reviews_count" xsi:type="array">
                <item name="attribute_code" xsi:type="string">reviews_count</item>
                <item name="fredhopper_type" xsi:type="string">int</item>
                <item name="label" xsi:type="string">Review Count</item>
            </item>
        </argument>
    </arguments>
</type>
  • 自定义建议数据
    • \Aligent\FredhopperIndexer\Model\Export\SuggestExporter类通过提供fileGenerators参数,允许将自定义数据源添加到“建议”导出中。
      • 添加到数组中的每个类都必须实现\Aligent\FredhopperIndexer\Api\Export\FileGeneratorInterface接口。
<type name="Aligent\FredhopperIndexer\Model\Export\SuggestExporter">
    <arguments>
        <argument name="fileGenerators" xsi:type="array">
            <item name="blacklist" xsi:type="object">Aligent\FredhopperIndexer\Model\Export\Data\BlacklistFileGenerator</item>
            <item name="whitelist" xsi:type="object">Aligent\FredhopperIndexer\Model\Export\Data\WhitelistFileGenerator</item>
        </argument>
    </arguments>
</type>