高性能全文搜索引擎-RediSearch
2018-05-16 14:32:39 阿炯

本站赞助商链接,请多关照。 RediSearch是一个高性能的全文搜索引擎,可作为一个Redis Module 运行在Redis上,是由RedisLabs团队开发的。采用C语言开发并在AGPL协议下授权。


RediSearch - Redis Powered Search Engine

RediSearch is a an open-source Full-Text and Secondary Index engine over Redis, developed by Redis Labs.

主要特性

RediSearch 是在Redis基础上从0开始开发的一个全文搜索索引,使用新的Redis Modules API来扩展Redis新命令和能力,主要特性包括:
简单,快速索引和搜索
数据存储在内存中,使用内存-有效的自定义数据结构
支持多种使用UTF-8编码的语言
文档和字段评分
结果的数值过滤
通过词干扩展查询
精确的短语搜索
按特定属性过滤结果(例如仅在标题中搜索“foo”)
强大的自动提示引擎
增量索引(不需要对索引进行优化和压缩)
支持用作存储在另一数据库中的文档的搜索索引
支持已经在Redis中存在的HASH对象作为文件的索引
扩展到多个Redis实例


Redisearch implements a search engine on top of Redis, but unlike other Redis search libraries, it does not use internal data structures like sorted sets.

性能




基准设置:
数据集:从维基百科页面提供的有用的英文摘要的转储,其中包括510万短摘要。
基准测试:我们针对不同的搜索引擎运行了几个具有不同配置文件的查询。并行的运行1、8、16、32和64个并发客户端执行每个查询。我们也跑了自动完成测试,从具有相同客户端并发配置文件的数据集中测试前1100名最受欢迎的2和3个字母前缀。
物理配置:2个 c4.4x large AWS EC2 Instance,每一个配置16核,32GB内存 和 SSD EBS 存储,一个用作client,另一个运行 servers

搜索引擎测试
RediSearch:5个分片运行在5个Redis Masters上,没有负载均衡,冗余或内置的缓存,此设置最多使用了Server机器的5个CPU核心。
ElasticSearch:一个实例有5个分片,过滤器缓存已禁用,在基准测试中,ElasticSearch使用了所有的16个CPU核心,因为它是多线程的。
Solr:solr-cloud的两个实例,每一个实例上面运行2个分片,缓存是完全禁用的,在基准测试过程中,Solr也是使用了所有的16个CPU核心。


最新版本:1.2
RediSearch 1.2.0 发布,此版本包含很多新的酷炫功能,包括:聚合过滤器、查询属性、模糊匹配、有条件的更新、反斜杠转义、同义词支持等。详情见发行公告

最新版本:2.8
2.8.9 现已于2023年10月下旬发布,这是 RediSearch 2.8 的一个维护版本。更新紧迫性为 “HIGH”,存在一个可能影响部分用户的严重 bug,官方建议尽快升级。RediSearch 是 RedisLabs 团队开发的一个高性能全文搜索引擎,可作为一个 Redis Module 运行在 Redis 上。相关更新内容如下:
一旦内存块未正确释放,大量文档更新会导致内存增长 (MOD-5181)
Resharding 优化导致进程卡住(MOD-5874、MOD-5864)
清理索引后,GC 可能会导致唯一值损坏 (MOD-5815)
使用 WITHCURSOR 的查询会导致内存增长,因为 CURSOR 在 shards 中并未失效(MOD-5580)
将错误从 shards 传播到 coordinator (MOD-5211)
添加对 RockyLinux 9 的支持 (MOD-5759)



官方主页:http://redisearch.io/
项目主页:https://github.com/RedisLabsModules/RediSearch