hkulekci/apisearch-module

Apisearch Zend Framework 模块

dev-master 2019-05-26 17:31 UTC

This package is auto-updated.

Last update: 2024-09-07 13:01:18 UTC


README

Apisearch 是一个完全基于开源第三方技术的开源搜索引擎。该项目为用户提供了一系列日益增长的本地化集成库,以及一些第三方项目集成包、模块、插件或 JavaScript 小部件。

此模块是一个库,可以轻松集成到 Zend Framework 和 Zend Expressive 中。以下是安装库的方法

composer require hkulekci/apisearch-module

使用 composer 安装模块后,您需要为 Apisearch 定义一些配置。您可以在 config/autoload 文件夹中创建一个 apisearch.local.php 文件,其结构如下

<?php

return [
    'apisearch' => [
        'host'  => '---your-api-search-server-host---',
        'version' => 'v1',
        'repository' => \Apisearch\Repository\HttpRepository::class,
        'token' => '---your-secret-app-token---',
        'appId' => '---your-app-id---',
    ]
];

然后您可以使用容器来访问 Apisearch 客户端实例,如下所示

class ProductFactory
{
    public function __invoke($container)
    {
        return new Product(
            $container->get(\Apisearch\Repository\TransformableRepository::class)
        );
    }
}

class ProductSearchFactory
{
    public function __invoke($container)
    {
        return new ProductSearch(
            $container->get(\Apisearch\Repository\TransformableRepository::class)
        );
    }
}

class Product
{
    protected repository;
    
    public function __constructor($repository)
    {
        $this->repository = $repository;
    }
    
    public function indexItem(array $item)
    {
        $id = $item['id'];
        // do some logic 
        $this->repository->addItem(
            \Apisearch\Model\Item::create(
                \Apisearch\Model\ItemUUID::createByComposedUUID($id),
                $item,
                [],
                $item
            )
        );
    }
}

class ProductSearch
{
    protected $repository;
    
    public function __constructor($repository)
    {
        $this->repository = $repository;
    }
    
    public function doSearch($keyword)
    {
        return $this->repository->query(
            \Apisearch\Query\Query::create($keyword)
                ->setMinScore(1)
        );
    }
}

您可以在配置提供者中看到 Apisearch 的容器中的依赖项。

    Apisearch\Configuration::class                       => Apisearch\ConfigurationFactory::class,
    Apisearch\App\AppRepository::class                   => Apisearch\App\HttpAppRepositoryFactory::class,
    Apisearch\Repository\HttpRepository::class           => Apisearch\Repository\HttpRepositoryFactory::class,
    Apisearch\Repository\TransformableRepository::class  => Apisearch\Repository\TransformableRepositoryFactory::class,
    Apisearch\Repository\InMemoryRepository::class       => Apisearch\Repository\InMemoryRepositoryFactory::class, // For testing

有关更多信息,请参阅 文档。同时,请检查 example/example.php 文件以获取完整的示例用法。