locomotivemtl/charcoal-search

Charcoal 搜索引擎工具和实用程序

0.2.3.1 2020-12-17 19:08 UTC

README

此模块包含创建基于 Charcoal 的快速搜索引擎所需的所有工具和实用程序。

它具有非常可定制的搜索引擎/搜索配置,允许在 SQL 数据库表、Charcoal 模型或进行自定义搜索中搜索。

目录

如何安装

安装 charcoal-search 的首选(也是唯一支持)方式是使用 composer

★ composer require locomotivemtl/charcoal-search

依赖项

示例用法

use \Charcoal\Search\SearchRunner;

use \Foo\Bar\CustomObject;

$searchRunner = new SearchRunner([
    'search_config' => [
        'ident'    => 'my-custom-search',
        'searches' => [
            'foo'  => new CustomSearch([
                'logger'   => $logger
                'callback' => function($keyword) {

                }
            ])
        ]
    ],
    'model_factory' => $modelFactory,
    'logger'        => $logger
]);

// The results are an array like `['foo'=>[...], 'bar'=>[...]]`
$results = $searchRunner->search($keyword);

// Access log
$log = $searchRunner->searchLog();

// Differed access to results
$results = $searchRunner->results();

构造函数选项

SearchRunner 使用单个参数实例化,该参数包含构造函数选项和类依赖项

搜索配置

搜索配置对象包含搜索标识以及要在对象上运行的各个搜索。

搜索类型

可用的搜索类型,这些类型在搜索配置的 searches 中定义

  • custom
  • table(待办事项)
  • model(待办事项)

自定义搜索

custom 搜索定义了一个回调函数。这可以是可调用的(一个方法或具有 __invoke 方法的对象)或字符串(将尝试在 Search Runner 对象上调用匹配名称的函数)。

回调方法必须具有以下签名:array callback(string $keyword);

自定义选项

表搜索

table 搜索仍然是 待办事项

模型搜索

model 搜索仍然是 待办事项

搜索日志

每个搜索都自动记录到(SQL)存储中。

Charcoal-admin 集成

默认情况下,搜索日志对象包含在 charcoal-admin 中显示的完整元数据。请访问 [[your-site.com]]/admin/object/collection?obj-type=charcoal/search/search-log。

还有 2 个小部件也可用于可视化日志

  • charcoal/admin/widget/search/no-results-search
  • charcoal/admin/widget/search/top-search

开发

要安装开发环境

★ composer install --prefer-source

要运行脚本(phplint、phpcs 和 phpunit)

★ composer test

开发依赖项

  • phpunit/phpunit
  • squizlabs/php_codesniffer
  • satooshi/php-coveralls

持续集成

编码风格

所有 Charcoal 模块都遵循相同的编码风格,而 charcoal-search 也不例外。对于 PHP

可以使用 composer phpcs 执行编码风格验证/强制执行。还有一个使用 composer phpcbf 的自动修复器。

作者

变更日志

  • 未发布

MIT 许可证(MIT)

版权所有 © 2016 Locomotive inc。

请参阅 作者

本软件及其相关文档文件(以下简称“软件”)的使用权在此免费授予任何人,允许其在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许将软件提供给他人进行上述操作,但须遵守以下条件:

上述版权声明和本许可声明应包含在软件的任何副本或主要部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,还是关于适销性、特定用途的适用性或非侵权性的保证。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他行为,无论源于、涉及或与软件或软件的使用或其他操作有关。