摩卡卡/红卡

此包已被弃用且不再维护。未建议替代包。

使用 PHP 和 Redis 实现的自动完成

dev-master 2015-06-28 08:16 UTC

This package is not auto-updated.

Last update: 2019-01-01 04:41:40 UTC


README

使用 PHP+Redis 实现的自动完成。

灵感来源于 https://github.com/seatgeek/soulmate

此库处理了带有排序结果(根据“得分”)的基本自动完成实现,以及结果的相关任意元数据。还具有将不同的自动完成数据库分离到“箱子”中的能力(例如,拥有独立的“用户”箱和另一个“视频”箱,因此当查询“用户”时不会显示来自“视频”的结果)

安装

mochaka/redcard 添加到 composer.json 的依赖项中

{
    "require": {
        "mochaka/redcard": "dev-master"
    }
}

使用 composer update 更新您的包或使用 composer install 安装。

Laravel 5 集成

RedCard 支持与 Laravel 5 的集成。在 Laravel 5 中使用库的最佳实践是添加 ServiceProvider。

打开您的 Laravel 配置文件 config/app.php 并添加以下行。

$providers 数组中添加此包的 service providers。

'providers' => array(

    [...]

    'Mochaka\RedCard\RedCardServiceProvider'
),

独立

您需要创建一个 Predis 客户端实例并将其提供给自动完成类。

    $redis = new Predis\Client(array(
        'scheme' => 'tcp',
        'host'   => 'localhost',
        'port'   => 6379,
    ));

    $autocomplete = new Mochaka\RedCard\RedisAutocomplete( $redis );

    // You are ready to go!

基本用法

要存储数据,您必须有一个项目的唯一 ID 以及应可搜索的短语。

Laravel


RedCard::store(2, "cat");
RedCard::store(3, "care");
RedCard::store("MYCRAZYID", "caress");
RedCard::store(55, "cars");
RedCard::store(6, "camera");

$results = RedCard::find("car");

var_dump($results)

独立


$autocomplete->store(2, "cat");
$autocomplete->store(3, "care");
$autocomplete->store("MYCRAZYID", "caress");
$autocomplete->store(55, "cars");
$autocomplete->store(6, "camera");

$results = $autocomplete->find("car");

var_dump($results)

箱子

可以通过箱子区分不同的数据类型。每个箱子都有自己的名称,当搜索和删除时,它们不会相互冲突。

Laravel


RedCard::store(2, "Mary", "users");
RedCard::store(3, "Sally", "users");
RedCard::store(4, "Leo", "users" );

RedCard::store(5, "Mary Had A Litte Lamb", "blog-title");
RedCard::store(6, "Redis Rocks, A Life Story", "blog-title");

$results = RedCard::find("Mary", "users");

// Will only return Mary instead of "Mary Had A Litte Lamb"

独立


$autocomplete->store(2, "Mary", "users");
$autocomplete->store(3, "Sally", "users");
$autocomplete->store(4, "Leo", "users" );

$autocomplete->store(5, "Mary Had A Litte Lamb", "blog-title");
$autocomplete->store(6, "Redis Rocks, A Life Story", "blog-title");

$results = $autocomplete->find("Mary", "users");

// Will only return Mary instead of "Mary Had A Litte Lamb"

接口

为了利用 RedCard,您需要了解的基本功能。

  • store: 将新项目存储到自动完成

         store($id, $phrase, $bin = '', $score = 1, $data = NULL)

    示例

         RedCard::store('id123', "Clockwork Orange", "Books", 3, array('author'=>'Anthony Burgess'))
  • find: 查找项目。搜索被缓存在一个单独的哈希中。

         find($phrase, $bin = '', $count = 10, $isCaching = true)

    示例

         RedCard::find("Clock", "Books" , 1, true)
  • remove: 从箱子中删除项目。搜索被缓存在一个单独的哈希中。

         remove($id, $bin = '')

    示例

         RedCard::remove('id123', 'Books')

许可

RedCard 自动完成在 MIT 许可下发布。原始版权(c)2011 Rishi Ishairzay,在 MIT 许可下发布