lableb/laravel-sdk

Lableb 云搜索包 For Laravel

0.0.1-BETA 2021-04-04 07:14 UTC

This package is auto-updated.

Last update: 2024-09-27 14:30:32 UTC


README

Software License

轻松与 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一个唯一的用户 ID1254
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一个唯一的用户 ID1254
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();
}

示例响应:

有两种类型的建议

  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( $collection, $options, [$handler] )

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

源文档参数 (\$options):

选项描述必需示例
id源文档的ID1
title源文档的标题'How to make italian pizza'
url源文档的URL'https://funfunfood.com/2018/12/06/pizza'
限制要获取多少个文档5
user_id一个唯一的用户 ID1254
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点击结果的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( '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_idurl

提交推荐反馈

$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 函数用于 searchautocompleterecommend,这对于跟踪您在 Lableb 控制台的用户搜索选择和推荐非常重要

安全性

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

致谢

许可证

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