jsidorenko / redcard
使用 PHP 和 Redis 实现的自动补全功能
v1.1
2016-04-04 22:47 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- predis/predis: dev-master
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 许可证下发布