lableb / laravel-sdk
Lableb 云搜索包 For Laravel
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 14:30:32 UTC
README
轻松与 Lableb 集成,在网站/应用程序中添加强大的搜索功能
- 搜索(即时结果 & 高度可配置)
- 自动完成(超级快 & 理解你的需求)
- 推荐(通过智能推荐直接链接你的数据)
- 索引新数据(文档)(索引数据使其可在搜索结果中可用)
- 更新现有数据(文档始终更新...没问题,你可以轻松更新它)
- 删除文档(轻松从搜索结果中移除)
要获取您的令牌和其他配置选项
- 登录到 Lableb 控制台
- 打开 API 密钥选项卡
- 生成新令牌(或使用现有的令牌)
- 按原样复制项目名称(小写)
安装
使用 composer 安装
$ composer require lableb/laravel-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_TOKEN=xxxxx-search-token-xxxxxx
LABLEB_INDEX_TOKEN=xxxxx-index-token-xxxxxx
之后,您可能需要使用以下命令清除缓存
$ php artisan config:clear
使用方法
您可以初始化此包
use Lableb\LablebSDK;
$lableb = new LablebSDK();
您也可以这样传递参数
use Lableb\LablebSDK;
$lableb = new LablebSDK(
"project name",
"search token",
"indexing token"
);
注意
>建议您将令牌保存在外部,例如环境变量文件中,然后将其添加到 .gitignore
文件中。
>在发生异常时,所有 LablebSDK 方法都会抛出 LablebException 异常。使用 try-catch 语句使用 SDK。
索引文档
$lableb->index( $collection, $documents )
- \$collection: 您想索引文档的集合,例如
posts
。 - \$documents: 要索引的文档或文档数组。
示例:
$collection = 'posts';
$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/laravel-sdk/index-documents",
"authors" => ["Lableb Team"],
"date" => new \DateTime()
]];
try
{
$response = $lableb->index( $collection, $documents );
}
catch ( \Lableb\Exceptions\LablebException $e )
{
echo $e->getStatus()." - ".$e->getMessage();
}
示例响应:
[
"indexed" => true,
"message" => "1 documents has been indexed"
]
搜索文档
$lableb->search( $collection, $queryOptions, $handler )
- \$collection: 您想搜索的集合名称。
- \$queryOptions: 一个包含搜索参数的关联数组。
- \$handler: 一个可选参数,默认值为
default
,如果您想使用自定义搜索处理程序,请指定它。
搜索参数 (\$queryOptions):
选项 | 描述 | 必需 | 示例 |
---|---|---|---|
q | 搜索词 | 是 | 'how to make pizza' |
过滤器 | 搜索过滤器 | 否 | [ 'tags' => 'delicious' ] |
限制 | 要获取多少个文档 | 否 | 10 |
跳过 | 要跳过多少个文档(偏移量) | 否 | 50 |
排序 | 文档的顺序 | 否 | '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( 'posts', [
'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( $collection, $queryOptions, [$handler] )
- \$collection:要搜索建议的集合名称。
- \$queryOptions:一个包含搜索参数的关联数组。
- \$handler:一个可选参数,默认值为
suggest
,如果您想使用自定义自动完成处理程序,请指定它。
自动完成选项 (\$queryOptions):
选项 | 描述 | 必需 | 示例 |
---|---|---|---|
q | 搜索词 | 是 | 'how to ma' |
限制 | 要获取多少个文档 | 否 | 10 |
user_id | 一个唯一的用户 ID | 否 | 1254 |
user_ip | 用户 IP 地址 | 否 | '55.22.11.6' |
user_country | 用户国家代码 | 否 | 'CA' |
如果需要,您可以指定任何其他查询字符串参数。
示例:
try
{
$response = $lableb->autocomplete( 'posts', [
'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( $collection, $options, [$handler] )
- \$collection:要搜索推荐的集合名称。
- \$options:一个关联数组,描述源文档。
- \$handler:一个可选参数,默认值为
recommend
,如果您想使用自定义搜索处理程序,请指定它。
源文档参数 (\$options):
选项 | 描述 | 必需 | 示例 |
---|---|---|---|
id | 源文档的ID | 是 | 1 |
title | 源文档的标题 | 否 | 'How to make italian pizza' |
url | 源文档的URL | 否 | 'https://funfunfood.com/2018/12/06/pizza' |
限制 | 要获取多少个文档 | 否 | 5 |
user_id | 一个唯一的用户 ID | 否 | 1254 |
user_ip | 用户 IP 地址 | 否 | '55.22.11.6' |
user_country | 用户国家代码 | 否 | 'CA' |
try
{
$response = $lableb->recommend( 'posts', [
'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( $collection, $options, [$handler] )
- \$collection:已进行搜索的集合名称。
- \$options:一个关联数组,描述点击的文档。
- \$handler:一个可选参数,默认值为
default
,它是搜索中使用的处理程序名称。
搜索反馈选项 (\$options):
选项 | 描述 | 必需 | 示例 |
---|---|---|---|
query | 用户搜索了什么查询 | 是 | 'how to make pizza' |
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( 'posts', [
'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( $collection, $options, [$handler] )
与搜索反馈提交完全相同,但导航建议不需要item_id
和url
。
提交推荐反馈
$lableb->submitRecommendationFeedback( $collection, $source, $target, [$handler] )
- \$collection:已进行推荐搜索的集合名称。
- \$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( 'posts', $source, $target );
}
catch( \Lableb\Exceptions\LablebException $e )
{
echo $e->getMessage();
}
示例响应:
[
'submitted' => true
]
删除文档
$lableb->delete( $collection, $id )
- \$collection:您要从其中删除文档的集合名称。
- \$id:要删除的文档的ID。
示例:
try
{
$response = $lableb->delete( 'posts', 1 );
}
catch( \Lableb\Exceptions\LablebException $e )
{
echo $e->getMessage();
}
示例响应:
[
'deleted' => true,
'message' => 'Document with ID of 1 has been deleted'
]
SDK提供
indexing
文档功能(索引数据使其可用于搜索结果)delete
文档功能(轻松从搜索结果中删除)search
功能,允许您向Lableb API发送查询autocomplete
功能,帮助您的用户预测他们正在搜索的内容recommend
函数可以帮助您根据现有文档获取相似文档feedback
函数用于search
、autocomplete
和recommend
,这对于跟踪您在 Lableb 控制台的用户搜索选择和推荐非常重要
安全性
如果您发现任何与安全相关的问题,请通过 support@lableb.com 发送电子邮件,而不是使用问题跟踪器。
致谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅许可证文件。