jorgeanzola/craft-scout

Craft Scout 为您提供了一种简单的解决方案,可以将全文搜索添加到您的条目中。Scout 将自动保持您的搜索索引与条目同步。

安装: 683

依赖: 0

建议者: 0

安全: 0

星星: 0

观察者: 2

分支: 55

类型:craft-plugin

0.4.8 2018-08-01 11:19 UTC

This package is auto-updated.

Last update: 2024-09-20 22:23:05 UTC


README

Icon

Latest Version Quality Score StyleCI Total Downloads

Craft CMS 3 的 Scout 插件

Craft Scout 为您提供了一种简单的解决方案,可以将全文搜索添加到您的条目中。Scout 将自动保持您的搜索索引与条目同步。

支持开源。请买杯啤酒。

此插件受 MIT 许可证的许可,这意味着它是一项完全免费的开放源代码软件,您可以使用它来做什么和如何使用它。如果您在使用它并想支持开发,请在 Beerpay 上请我喝杯啤酒!

Beerpay

要求

此插件需要 Craft CMS 3.0.0-RC1 或更高版本。

安装

要安装插件,请按照以下说明操作。

  1. 打开您的终端并转到您的 Craft 项目

     cd /path/to/project
    
  2. 然后告诉 Composer 加载插件

     composer require rias/craft-scout
    
  3. 在控制面板中,转到设置 → 插件,并点击 Scout 的“安装”按钮。

设置

要定义您的索引,请在您的 config 文件夹中创建一个新的 scout.php 文件。此文件应返回一个包含 3 个键的数组,即 application_id、您的 admin_api_key(这两个都可以在您的 Algolia 账户中找到)以及一个 mappings 键,该键定义了您站点的映射。

在映射数组中,每个索引都由一个配置数组表示。

<?php

return [
    "sync" => true,
    "application_id" => "algolia",
    "admin_api_key" => "algolia",
    "mappings" => [
        [
            'indexName' => 'blog',
            'elementType' => \craft\elements\Entry::class,
            'criteria' => [
                'section' => 'blog'
            ],
            'transformer' => function (craft\base\Element $element) {
                return $element->toArray();
            },
        ],
        ...
    ],
];

同步选项

此配置变量确定 Scout 是否应自动保持您的条目同步。将此设置为 false 将禁用 Scout 的所有事件监听器。

映射配置设置

indexName

Algolia 中的索引名称,如果您尚未创建索引,Scout 将为您创建一个。

elementType

此索引包含的元素类型,大多数情况下这将 craft\elements\Entry::class

Craft 的默认元素类型类包括

  • craft\elements\Asset
  • craft\elements\Category
  • craft\elements\Entry
  • craft\elements\GlobalSet
  • craft\elements\MatrixBlock
  • craft\elements\Tag
  • craft\elements\User
'elementType' => craft\elements\Entry::class,

criteria

一个参数数组,应在元素查询上设置,以限制哪些条目进入索引。这些标准也用于通过控制台命令导入时。

'criteria' => [
    'section' => 'blog',
],

transformer

应使用的 transformer,以定义应发送到 Algolia 的每个元素的数据。如果您不设置此,将使用默认的 transformer,它包括元素的所有直接属性值,但不包括自定义字段值。

// Can be set to a function
'transformer' => function(craft\elements\Entry $entry) {
    return [
        'title' => $entry->title,
        'id' => $entry->id,
        'url' => $entry->url,
    ];
},

// Or a string/array that defines a Transformer class configuration
'transformer' => 'MyTransformerClassName',

// Or a Transformer class instance
'transformer' => new MyTransformerClassName(),

您的自定义 transformer 类可能如下所示

<?php

use craft\elements\Entry;
use League\Fractal\TransformerAbstract;

class MyTransformerClassName extends TransformerAbstract
{
    public function transform(Entry $entry)
    {
        return [
            // ...
        ];
    }
}

splitElementIndex

对于长文档,建议将元素分割成多行,以保持每行在行数据大小内。这可以通过使用 splitElementIndex 来完成。数组项是来自 transformer 的数组索引。

'splitElementIndex' => [
    'summary',
    'matrixElement'
]

重要 - distinctId(在索引后可用)必须设置为一个属性,以便在使用 splitElementIndex 时,删除对象时可以进行分割。

控制台命令

Scout 提供了两个易于使用的控制台命令来管理您的索引。

导入

要导入一个或所有索引,可以运行以下控制台命令

./craft scout/index/import <indexName?>

不需要 indexName 参数,当省略它时,将导入所有映射。

刷新/清除

清除索引就像在控制台运行命令一样简单。

./craft scout/index/flush <indexName?>

与导入命令一样,indexName 不是必需的,当刷新 Scout 时,它会询问你是否真的想要清除索引中的所有数据。

致谢

  • Craft Algolia 由 aaronwaldon 作为起点基础
  • @larsboldt 提供了 Split Element Index 选项

Rias 提供