摩卡卡 / 红卡
使用 PHP 和 Redis 实现的自动完成
Requires
- php: >=5.3.0
- illuminate/support: ~5
Requires (Dev)
- predis/predis: dev-master
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 许可下发布