meiji / pimcore-meilisearch-bundle
Pimcore Meilisearch Bundle
v0.0.6
2024-08-22 21:37 UTC
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- meilisearch/meilisearch-php: ^v1.9
- nyholm/psr7: ^1.8
- pimcore/pimcore: ^11.1
- symfony/http-client: ^7.1
README
为 Pimcore 添加 Meilisearch API 封装和数据同步功能
要使用此包,您必须设置 Mailisearch 实例凭据,升级指定模型(扩展提供的接口)并应用索引同步
meilisearch:index-sync
- 同步搜索索引配置;meilisearch:document-sync
- 同步实现类中的所有对象。
Bundle 自动添加、更新和删除 DataObject 的对应文档。
安装
- 在您的 Pimcore 11 根项目
$ composer require meiji/pimcore-meilisearch-bundle
- 设置环境变量 (例如在
.env
中)
MEILISEARCH_URL=http://127.0.0.1:7700
MEILISEARCH_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MEILISEARCH_INDEX_PREPEND=myapp_
- 在
config/bundles.php
中注册包
return [
// ... Other bundles ...
Meiji\MeilisearchBundle\MeilisearchBundle::class => ['all' => true],
];
配置模型
- 通过 UI 声明或代码将
\Meiji\MeilisearchBundle\Model\DocumentInterface
添加到 DataObject 实现
use Meiji\MeilisearchBundle\Model\DocumentInterface as MeilisearchDocumentInterface;
// ...
class Product extends \Pimcore\Model\DataObject\Product implements MeilisearchDocumentInterface
{
// ...
- 发布接口函数
// Index UID of DataObject model. Keep in mind usable `prefix`, that will autoprepend to this result string
public static function getMeilisearchIndexUid(): string;
// Index Primary Key of DataObject index documents
public static function getMeilisearchIndexPrimaryKey(): string;
// Next code show example index configuration with default values. You can use this values or configured for your own rules
// @see official docs [settings](https://meilisearch.com.cn/docs/reference/api/settings)
public static function getMeilisearchIndexDisplayedAttributes() : array
{
return ['*'];
}
public static function getMeilisearchIndexFilterableAttributes() : array
{
return [];
}
public static function getMeilisearchIndexSearchableAttributes() : array
{
return ['*'];
}
public static function getMeilisearchIndexSortableAttributes() : array
{
return [];
}
public function getMeilisearchIndexDistinctAttribute() : ?string
{
return null;
}
public static function getMeilisearchIndexTypoTolerance() : array
{
return [
"minWordSizeForTypos" => [
"oneTypo" => 5,
"twoTypos" => 9
],
"disableOnAttributes" => [
]
];
}
public static function getMeilisearchPagination() : array
{
return [
"maxTotalHits" => 1000
];
}
public static function getMeilisearchPagination() : array
{
return [
"words",
"typo",
"proximity",
"attribute",
"sort",
"exactness"
];
}
// Define function that do data represent of DataObject for save in Meilisearch
public function getMeilisearchDocumentData() : array
{
return [
'id' => $this->getId()
// ... other calculated props
];
}