jsidorenko/redcard

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

v1.1 2016-04-04 22:47 UTC

This package is not auto-updated.

Last update: 2024-09-20 18:48:44 UTC


README

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

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

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

安装

mochaka/redcard 添加到 composer.json 的需求中

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

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

集成

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

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

    $autocomplete = new JSidorenko\RedCard\RedisAutocomplete( $redis );
    or
    $autocomplete = new JSidorenko\RedCard\RedisAutocomplete( $redis, "yourDomainPrefix" );

    instead of "yourDomainPrefix" you can write something like "users" or "locations"

基本用法

要存储数据,您必须为项目提供唯一的 ID 和应可搜索的短语。

$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)

bins

不同类型的数据可以通过 bins 来区分。每个 bin 有其自己的名称,在搜索和删除时不会相互冲突。

$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)

    示例

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

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

    示例

         $autocomplete->find("Clock", "Books", 1, true)
  • 通过 ID 查找:通过提供的 ID 查找项目。如果没有找到任何内容,则返回 null。

         findByID($id, $bin = '')

    示例

         $autocomplete->findByID('id123')
  • remove:从 bin 中删除项目。搜索在单独的哈希中缓存。

         remove($id, $bin = '')

    示例

         $autocomplete->remove('id123', 'Books')
  • clear:清除所有项目。

         clear()

    示例

         $autocomplete->clear()

许可证

RedCard 自动补全许可协议为 MIT 许可证。原始版权(c)2011 Rishi Ishairzay,在 MIT 许可证下发布