victorsigma/redcard

使用 PHP 和 Redis 实现的自动补全

dev-master 2014-07-25 13:08 UTC

This package is not auto-updated.

Last update: 2020-08-03 06:26:47 UTC


README

使用 PHP+Redis 实现的自动补全。

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

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

安装

victorsigma/redcard 添加到 composer.json 的要求中

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

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

Laravel 4 集成

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

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

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

'providers' => array(
    
    [...]

    'VictorSigma\RedCard\RedCardServiceProvider'
),

独立

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

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

    $autocomplete = new VictorSigma\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 许可下发布