hkulekci / apisearch-module
Apisearch Zend Framework 模块
dev-master
2019-05-26 17:31 UTC
Requires
- php: ^7.1
- apisearch-io/php-client: dev-master
- phpunit/phpunit: ^8.1
- psr/container: ^1.0
Requires (Dev)
- roave/security-advisories: dev-master
- zendframework/zend-servicemanager: ^3.3
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
文件以获取完整的示例用法。