meiji/pimcore-meilisearch-bundle

Pimcore Meilisearch Bundle

安装: 0

依赖者: 0

建议者: 0

安全: 0

类型:pimcore-bundle

v0.0.6 2024-08-22 21:37 UTC

This package is not auto-updated.

Last update: 2024-09-20 02:09:32 UTC


README

为 Pimcore 添加 Meilisearch API 封装和数据同步功能

要使用此包,您必须设置 Mailisearch 实例凭据,升级指定模型(扩展提供的接口)并应用索引同步

  • meilisearch:index-sync - 同步搜索索引配置;
  • meilisearch:document-sync - 同步实现类中的所有对象。

Bundle 自动添加、更新和删除 DataObject 的对应文档。

安装

  1. 在您的 Pimcore 11 根项目
$ composer require meiji/pimcore-meilisearch-bundle
  1. 设置环境变量 (例如在 .env 中)
MEILISEARCH_URL=http://127.0.0.1:7700
MEILISEARCH_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MEILISEARCH_INDEX_PREPEND=myapp_
  1. config/bundles.php 中注册包
return [
    // ... Other bundles ...
    Meiji\MeilisearchBundle\MeilisearchBundle::class => ['all' => true],
];

配置模型

  1. 通过 UI 声明或代码将 \Meiji\MeilisearchBundle\Model\DocumentInterface 添加到 DataObject 实现
use Meiji\MeilisearchBundle\Model\DocumentInterface as MeilisearchDocumentInterface;
// ...
class Product extends \Pimcore\Model\DataObject\Product implements MeilisearchDocumentInterface
{
// ...
  1. 发布接口函数

// 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
	];
}