lableb / php-sdk
Lableb云搜索php SDK
Requires
- php: >=7.2.0
- guzzlehttp/guzzle: ~7.0
- illuminate/config: *
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-27 13:56:00 UTC
README
轻松与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 | 一个唯一的用户ID | 否 | 1254 |
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 | 一个唯一的用户ID | 否 | 1254 |
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();
}
示例响应:
有两种类型的建议
- 导航建议 指的是一篇文章
- 筛选建议 具有可用于搜索的搜索筛选器
[
'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 | 源文档的ID | 是 | 1 |
title | 源文档的标题 | 否 | '如何制作意大利披萨' |
url | 源文档的URL | 否 | 'https://funfunfood.com/2018/12/06/pizza' |
limit | 要获取多少个文档 | 否 | 5 |
user_id | 一个唯一的用户ID | 否 | 1254 |
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 | 命中结果的ID | 是 | 1 |
item_order | 结果中命中的顺序(从 1 开始,而不是从 0 开始) | 是 | 1 |
url | 源文档的URL | 是 | 'https://funfunfood.com/2018/12/06/pizza' |
user_id | 一个唯一的用户ID | 否 | 1254 |
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_id 和 url。
提交推荐反馈
$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)。有关更多信息,请参阅许可证文件。