lableb/php-sdk

Lableb云搜索php SDK

2.0.3 2021-12-22 15:56 UTC

This package is auto-updated.

Last update: 2024-09-27 13:56:00 UTC


README

Software License

轻松与Lableb集成,在网站/应用程序中添加强大的搜索功能

  • 搜索(即时结果 & 高度可配置)
  • 自动完成(超级快 & 理解您想要的)
  • 推荐(使用智能推荐获取数据之间的直接链接)
  • 索引新数据(文档)(索引数据使其可在搜索结果中可用)
  • 更新现有数据(文档会不断更新……没问题,您可以轻松更新它)
  • 删除文档(轻松从搜索结果中删除)

要获取您的API密钥和其他配置选项

  • 登录到Lableb仪表板
  • 打开API密钥选项卡
  • 生成新的API密钥(或使用现有的密钥)
  • 按原样复制项目名称(小写)

安装

使用composer安装

$ composer require lableb/php-sdk

用法

要使用SDK,首先在PHP代码中要求composer的自动加载文件

require_once 'vendor/autoload.php';

然后您可以按照以下方式初始化SDK

use Lableb\LablebSDK;

$lableb = new LablebSDK(
  "project name",
  "search api key",
  "indexing api key"
);

注意

在发生异常的情况下,所有 LablebSDK 方法都会抛出 LablebException 异常。请使用try-catch使用SDK

索引文档

$lableb->index( $indexName, $documents )

  • \$indexName: 要在哪个索引上索引文档,例如 posts
  • \$documents: 要索引的文档或文档数组。

示例:

$indexName = 'index';
$documents = [[
  "id" => 1,
  "title" => "this is a title 1",
  "content" => "this is article content",
  "category" => ["cat1", "cat2"],
  "tags" => ["tag1", "tag2"],
  "url" => "https://solutions.lableb.com/en/doc/php-sdk/index-documents",
  "authors" => ["Lableb Team"],
  "date" => new \DateTime()
]];

try
{
  $response = $lableb->index( $indexName, $documents );
}
catch ( \Lableb\Exceptions\LablebException $e )
{
  echo $e->getStatus()." - ".$e->getMessage();
}

示例响应:

[
  "indexed" => true,
  "message" => "1 documents has been indexed"
]

搜索文档

$lableb->search( $indexName, $queryOptions, $handler )

  • \$indexName: 要搜索的索引名称。
  • \$queryOptions: 一个包含搜索参数的关联数组。
  • \$handler: 一个可选参数,默认值为 default,如果您想使用自定义搜索处理器,请指定它。

搜索参数 (\$queryOptions):

选项描述必需示例
q搜索词'如何制作披萨'
filter搜索过滤器[ 'tags' => 'delicious' ]
limit要获取多少个文档10
skip要跳过多少个文档(偏移量)50
sort文档的顺序'date asc' 或 'date desc',通常是字段名 + 排序
user_id一个唯一的用户ID1254
user_ip用户IP地址'55.22.11.6'
user_country用户国家代码'CA'

如果需要,您可以指定任何其他查询字符串参数,例如 'lang' => 'ar''tag' => ['tag1', 'tag2']

示例:

try
{
  $response = $lableb->search( 'index', [
    'q' => 'how to make pizza',
    'filter' => [
      'category' => 'Food',
      'tags' => [ 'delicious', 'pizza' ]
    ]
  ] );
}
catch( \Lableb\Exceptions\LablebException $e )
{
  echo $e->getStatus()." - ".$e->getMessage();
}

示例响应:

[
  'totalDocuments' => 50,
  'results' => [
    [
      'id' => 1,
      'title' => 'How to make italian pizza',
      'content' => 'The italian pizza, margherita ...',
      'date' => '2018-12-06T12:16:00.000+0000',
      'url' => 'https://funfunfood.com/2018/12/06/pizza',
      'image' => 'https://funfunfood.com/static/pizza.png',
      'feedbackUrl' => 'https://api-bahuth.lableb.com/api/v2/....'
    ],
  ],
  'totalFacets' => 50,
  'facets' => [
    'categories' => [
      [
        'value' => 'Food',
        'count' => 8
      ]
    ],
    'tags' => [],
    'authors' => [],
    'year' => []
  ]
]

注意

每个结果将有一个额外的字段称为 feedbackUrl,您可以通过对它执行GET请求来提交搜索反馈

自动完成

$lableb->autocomplete( $indexName, $queryOptions, [$handler] )

  • \$indexName: 要搜索建议的索引名称。
  • \$queryOptions: 一个包含搜索参数的关联数组。
  • \$handler: 一个可选参数,默认值为 suggest,如果您想使用自定义自动完成处理器,请指定它。

自动完成选项 (\$queryOptions):

选项描述必需示例
q搜索词'how to ma'
limit要获取多少个文档10
user_id一个唯一的用户ID1254
user_ip用户IP地址'55.22.11.6'
user_country用户国家代码'CA'

如果需要,您可以指定任何其他查询字符串参数。

示例:

try
{
  $response = $lableb->autocomplete( 'index', [
    'q' => 'how to ma'
  ] );
}
catch( \Lableb\Exceptions\LablebException $e )
{
  echo $e->getMessage();
}

示例响应:

有两种类型的建议

  1. 导航建议 指的是一篇文章
  2. 筛选建议 具有可用于搜索的搜索筛选器
[
  'totalSuggestions' => 33,
  'suggestions' => [
    [
      'suggestion_type' => 'navigational',
      'id' => 1,
      'phrase' => 'How to make italian pizza',
      'date' => '2018-12-06T12:16:00.000+0000',
      'url' => 'https://funfunfood.com/2018/12/06/pizza',
      'feedbackUrl' => 'https://api-bahuth.lableb.com/api/v2/....'
    ],
    [
      'suggestion_type' => 'filter',
      'phrase' => 'Posts about pizza',
      'filters' => [
        'meta' => ['Pizza', 'Food']
      ]
    ]
  ]
  'totalFacets' => 0
  'facets' => Array
        (
        )
]

注意

每个结果将有一个名为 feedbackUrl 的附加字段,您可以通过对该字段执行 GET 请求来提交自动完成反馈。

推荐(相关文章)

获取与某些文章相关的其他帖子

$lableb->recommend( $indexName, $options, [$handler] )

  • \$indexName: 您想要搜索推荐索引的索引名称。
  • \$options: 一个关联数组,描述源文档。
  • \$handler: 一个可选参数,默认值为 recommend,如果您想使用自定义搜索处理器,则指定它。

源文档参数 (\$options):

选项描述必需示例
id源文档的ID1
title源文档的标题'如何制作意大利披萨'
url源文档的URL'https://funfunfood.com/2018/12/06/pizza'
limit要获取多少个文档5
user_id一个唯一的用户ID1254
user_ip用户IP地址'55.22.11.6'
user_country用户国家代码'CA'
try
{
  $response = $lableb->recommend( 'index', [
    'id' => 1
  ] );
}
catch( \Lableb\Exceptions\LablebException $e )
{
  echo $e->getMessage();
}

示例响应:

[
  'totalDocuments' => 50,
  'results' => [
    [
      'id' => 1,
      'title' => 'How to make italian pizza',
      'content' => 'The italian pizza, margherita ...',
      'date' => '2018-12-06T12:16:00.000+0000',
      'url' => 'https://funfunfood.com/2018/12/06/pizza',
      'image' => 'https://funfunfood.com/static/pizza.png',
      'feedbackUrl' => 'https://api-bahuth.lableb.com/api/v2/....'
    ],
  ],
  'totalFacets' => 0
  'facets' => Array
        (
        )
]

注意

每个结果将有一个名为 feedbackUrl 的附加字段,您可以通过对该字段执行 GET 请求来提交推荐反馈。

提交反馈

有三种类型的反馈

  • 搜索反馈:当用户搜索后点击搜索结果时提交此反馈。
  • 自动完成反馈:当用户点击自动完成建议时提交此反馈。
  • 推荐反馈:当用户点击推荐文章时提交此反馈。

提交搜索反馈

$lableb->submitSearchFeedback( $indexName, $options, [$handler] )

  • \$indexName: 搜索已进行的索引名称。
  • \$options: 一个关联数组,描述命中文档。
  • \$handler: 一个可选参数,默认为 default,它是搜索中使用的处理器名称。

搜索反馈选项 (\$options):

选项描述必需示例
query用户搜索了什么查询'如何制作披萨'
item_id命中结果的ID1
item_order结果中命中的顺序(从 1 开始,而不是从 0 开始)1
url源文档的URL'https://funfunfood.com/2018/12/06/pizza'
user_id一个唯一的用户ID1254
user_ip用户IP地址'55.22.11.6'
user_country用户国家代码'CA'

示例:

try
{
  $lableb->submitSearchFeedback( 'index', [
    'query' => 'How to make pizza',
    'item_id' => 1,
    'item_order' => 1,
    'url' => 'https://funfunfood.com/2018/12/06/pizza'
  ] );
}
catch( \Lableb\Exceptions\LablebException $e )
{
  echo $e->getMessage();
}

示例响应:

[
  'submitted' => true
]

提交自动完成反馈

$lableb->submitAutocompleteFeedback( $indexName, $options, [$handler] )

与搜索反馈提交完全相同,但导航建议不需要 item_idurl

提交推荐反馈

$lableb->submitRecommendationFeedback( $indexName, $source, $target, [$handler] )

  • \$indexName: 进行推荐搜索的索引名称。
  • \$source: 源文档。
  • \$target: 命中文档。
  • \$handler: 一个可选参数,默认为 default,它是搜索中使用的处理器名称。

示例:

try
{
  $source = [
    'id' => 1, // REQUIRED
    'title' => 'How to make italian pizza',
    'url' => 'https://funfunfood.com/2018/12/06/pizza',

    // OPTIONAL fields and only specified in source
    'user_id' => 2582,
    'user_ip' => '25.25.12.4',
    'user_country' => 'CA'
  ];

  $target = [
    'id' => 2, // REQUIRED
    'title' => 'How to make margherita',
    'url' => 'https://funfunfood.com/2018/12/06/margherita',

    // Only in target
    'item_order' => 1
  ];

  $response = $lableb->submitRecommendationFeedback( 'index', $source, $target );
}
catch( \Lableb\Exceptions\LablebException $e )
{
  echo $e->getMessage();
}

示例响应:

[
  'submitted' => true
]

删除文档

$lableb->delete( $indexName, $id )

  • \$indexName: 您想要从其中删除文档的索引名称。
  • \$id: 要删除的文档的ID。

示例:

try
{
  $response = $lableb->delete( 'index', 1 );
}
catch( \Lableb\Exceptions\LablebException $e )
{
  echo $e->getMessage();
}

示例响应:

[
  'deleted' => true,
  'message' => 'Document with ID of 1 has been deleted'
]

在 Laravel 项目中使用 Php SDK

安装

使用composer安装

$ composer require lableb/php-sdk

然后发布 lableb.php 文件到您的配置目录

$ php artisan vendor:publish --provider="Lableb\ServiceProviders\LablebServiceProvider"

将以下键添加到您的环境变量文件 .env 文件

(您可以从 https://dashboard.lableb.com/dashboard/login 获取值)

LABLEB_PROJECT_NAME=your_project_name
LABLEB_SEARCH_API_KEY=xxxxx-search-api-key-xxxxxx
LABLEB_INDEX_API_KEY=xxxxx-index-api-key-xxxxxx

之后,您可能需要使用以下命令清除缓存

$ php artisan config:clear

用法

您可以通过以下方式初始化 SDK 而不带参数:在 Laravel 项目中,如果您将配置添加到 .env 文件,则可以执行此操作

use Lableb\LablebSDK;

$lableb = new LablebSDK(); 

您也可以这样传递参数

use Lableb\LablebSDK;

$lableb = new LablebSDK(
  "project name",
  "search api key",
  "indexing api key"
);

注意

建议将您的 API 密钥保存在源代码之外,可以将其保存到环境变量文件中,然后将其添加到 .gitignore,例如。

SDK 提供

  • indexing 文档功能(索引数据使其可在搜索结果中可用)
  • 删除文档函数(轻松从搜索结果中移除)
  • 搜索函数,允许您向Lableb API发送查询
  • 自动完成函数,帮助您的用户预测他们正在搜索的内容
  • 推荐函数,根据现有文档获取相似文档
  • 搜索、自动完成和推荐功能的反馈函数,这对于您在Lableb仪表板中跟踪用户的搜索选择和推荐非常重要

安全

如果您发现任何与安全相关的问题,请通过电子邮件support@lableb.com联系,而不是使用问题跟踪器。

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件