meilisearch/meilisearch-php

Meilisearch API的PHP封装


README

Meilisearch-PHP

Meilisearch PHP

Meilisearch | Meilisearch Cloud | 文档 | Discord | 路线图 | 网站 | 常见问题解答

Codecov coverage Latest Stable Version Test License Bors enabled

🚀 为PHP编写的Meilisearch API客户端 🐘

Meilisearch PHP 是为PHP开发者提供的Meilisearch API客户端。

Meilisearch 是一个开源的搜索引擎。 了解Meilisearch的更多信息。

目录

📖 文档

要了解更多关于Meilisearch PHP的信息,请参阅深入的Meilisearch PHP文档。要了解有关Meilisearch的一般信息,请参阅我们的文档或我们的API参考

🚀 让您的Meilisearch体验更上一层楼

告别服务器部署和手动更新,使用Meilisearch Cloud。开始14天的免费试用!无需信用卡。

🔧 安装

要开始使用,只需使用Composer引入该项目。
您还需要安装提供“psr/http-client-implementation”和“psr/http-factory-implementation”的软件包。
兼容的HTTP客户端和客户端适配器列表可在php-http.org找到。

如果您不知道要使用哪个HTTP客户端,我们建议使用Guzzle 7。:

composer require meilisearch/meilisearch-php guzzlehttp/guzzle http-interop/http-factory-guzzle:^1.0

以下是用symfony/http-client安装的示例

composer require meilisearch/meilisearch-php symfony/http-client nyholm/psr7:^1.0

💡 更多与此软件包兼容的HTTP客户端安装可在此部分找到。

运行Meilisearch

有许多简单的方法可以下载和运行Meilisearch实例

例如,使用终端中的curl命令

#Install Meilisearch
curl -L https://install.meilisearch.com | sh

# Launch Meilisearch
./meilisearch --master-key=masterKey

注意:您还可以从 HomebrewAPT 下载Meilisearch,甚至使用 Docker 运行它。

🚀 入门

添加文档

<?php

require_once __DIR__ . '/vendor/autoload.php';

use Meilisearch\Client;

$client = new Client('http://127.0.0.1:7700', 'masterKey');

# An index is where the documents are stored.
$index = $client->index('movies');

$documents = [
    ['id' => 1,  'title' => 'Carol', 'genres' => ['Romance, Drama']],
    ['id' => 2,  'title' => 'Wonder Woman', 'genres' => ['Action, Adventure']],
    ['id' => 3,  'title' => 'Life of Pi', 'genres' => ['Adventure, Drama']],
    ['id' => 4,  'title' => 'Mad Max: Fury Road', 'genres' => ['Adventure, Science Fiction']],
    ['id' => 5,  'title' => 'Moana', 'genres' => ['Fantasy, Action']],
    ['id' => 6,  'title' => 'Philadelphia', 'genres' => ['Drama']],
];

# If the index 'movies' does not exist, Meilisearch creates it when you first add the documents.
$index->addDocuments($documents); // => { "uid": 0 }

使用 uid,您可以通过 任务 检查您文档添加的状态(enqueuedcanceledprocessingsucceededfailed)。

基本搜索

// Meilisearch is typo-tolerant:
$hits = $index->search('wondre woman')->getHits();
print_r($hits);

输出

Array
(
    [0] => Array
        (
            [id] => 2
            [title] => Wonder Woman
            [genres] => Array
                (
                     [0] => Action, Adventure
                )
        )
)

自定义搜索

所有支持的选项都在文档的 搜索参数 部分描述。

💡 关于 search() 方法的更多信息,请参阅 Wiki

$index->search(
    'phil',
    [
        'attributesToHighlight' => ['*'],
    ]
)->getRaw(); // Return in Array format

JSON 输出

{
    "hits": [
        {
            "id": 6,
            "title": "Philadelphia",
            "genre": ["Drama"],
            "_formatted": {
                "id": 6,
                "title": "<em>Phil</em>adelphia",
                "genre": ["Drama"]
            }
        }
    ],
    "offset": 0,
    "limit": 20,
    "processingTimeMs": 0,
    "query": "phil"
}

带过滤的自定义搜索

如果您想启用过滤,必须将您的属性添加到 filterableAttributes 索引设置中。

$index->updateFilterableAttributes([
  'id',
  'genres'
]);

您只需要执行此操作一次。

请注意,每次您更新 filterableAttributes 时,Meilisearch 都会重建您的索引。根据您的数据集大小,这可能需要一些时间。您可以使用 任务 跟踪此过程。

然后,您可以进行搜索

$index->search(
  'wonder',
  [
    'filter' => ['id > 1 AND genres = Action']
  ]
);
{
  "hits": [
    {
      "id": 2,
      "title": "Wonder Woman",
      "genres": ["Action","Adventure"]
    }
  ],
  "offset": 0,
  "limit": 20,
  "estimatedTotalHits": 1,
  "processingTimeMs": 0,
  "query": "wonder"
}

🤖 与Meilisearch的兼容性

此包保证与 Meilisearch v1.x 版本 兼容,但某些功能可能不可用。请查看 问题 获取更多信息。

💡 了解更多

以下部分可能在我们的主要文档网站上引起您的兴趣

🧰 HTTP客户端兼容性

您可以使用任何 PSR-18 兼容客户端与此 SDK 一起使用。不需要额外的配置。
兼容的 HTTP 客户端和客户端适配器列表可在 php-http.org 找到。

如果您想使用此 meilisearch-php

  • guzzlehttp/guzzle(Guzzle 7),运行
composer require meilisearch/meilisearch-php guzzlehttp/guzzle http-interop/http-factory-guzzle:^1.0
  • php-http/guzzle6-adapter(Guzzle < 7),运行
composer require meilisearch/meilisearch-php php-http/guzzle6-adapter:^2.0 http-interop/http-factory-guzzle:^1.0
  • symfony/http-client,运行
composer require meilisearch/meilisearch-php symfony/http-client nyholm/psr7:^1.0
  • php-http/curl-client,运行
composer require meilisearch/meilisearch-php php-http/curl-client nyholm/psr7:^1.0
  • kriswallsmith/buzz,运行
composer require meilisearch/meilisearch-php kriswallsmith/buzz nyholm/psr7:^1.0

自定义您的HTTP客户端

出于某种原因,您可能需要向自己的 HTTP 客户端传递自定义配置。
确保在初始化 Meilisearch 客户端时拥有一个 PSR-18 兼容的客户端。

按照 入门 部分中的示例,使用 Guzzle HTTP 客户端

new Client('http://127.0.0.1:7700', 'masterKey', new GuzzleHttpClient(['timeout' => 2]));

⚙️ 贡献

本项目欢迎任何新的贡献!

如果您想了解更多关于开发工作流程或想要贡献,请访问我们的 贡献指南 获取详细说明!

Meilisearch 提供并维护了许多像这样的 SDKs 和集成工具。我们希望为任何类型的项目提供 令人惊叹的搜索体验。如果您想贡献力量、提出建议或了解当前进展,请访问我们的 集成指南 仓库。