# redisearch **Repository Path**: geekcheng/redisearch ## Basic Information - **Project Name**: redisearch - **Description**: RediSearch是一个高性能的全文搜索引擎,可作为一个Redis Module 运行在Redis上,是由RedisLabs团队开发的。 主要特性 RediSearch 是在Redis基础上从0开始开发的一个全文搜索索引,使用新的Redis Modules API来扩展Redis新命令和能力,它的主要特性包括: 简单,快速索引和搜索 数据存储在内存中,使用内存-有效的自定义数据结构 支持多种使用UTF-8编码的语言 文档和字段评分 结果的数值过滤 通过词干扩展查询 精确的短语搜索 按特定属性过滤结果(例如仅在标题中搜索“foo”) 强大的自动提示引擎 增量索引(不需要对索引进行优化和压缩) 支持用作存储在另一数据库中的文档的搜索索引 支持已经在Redis中存在的HASH对象作为文件的索引 扩展到多个Redis实例 性能 基准设置: 数据集:从维基百科页面提供的有用的英文摘要的转储,其中包括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核心。 - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 13 - **Created**: 2017-07-12 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [![Build Status](https://travis-ci.org/RedisLabsModules/RediSearch.svg?branch=master)](https://travis-ci.org/RedisLabsModules/RediSearch) # RediSearch ### Full-Text search over redis by RedisLabs ![logo.png](docs/logo.png) ### See Full Documentation at [http://redisearch.io](http://redisearch.io) ### Latest Release: [0.19.1 (Preview)](https://github.com/RedisLabsModules/RediSearch/releases/tag/v0.19.1) # Client Libraries * **Python**: [https://github.com/RedisLabs/redisearch-py](https://github.com/RedisLabs/redisearch-py) * **Java**: [https://github.com/RedisLabs/JRediSearch](https://github.com/RedisLabs/JRediSearch) ## Community Libraries: * **PHP**: [https://github.com/ethanhann/redisearch-php](https://github.com/ethanhann/redisearch-php) (By Ethan Hann) * **Ruby on Rails**: [https://github.com/dmitrypol/redi_search_rails](https://github.com/dmitrypol/redi_search_rails) (By Dmitry Polyakovsky) * **Ruby**: [https://github.com/vruizext/redisearch-rb](https://github.com/vruizext/redisearch-rb) (By Victor Ruiz) * **.Net**: [https://libraries.io/nuget/NRediSearch](https://libraries.io/nuget/NRediSearch) (By Marc Gravell) # Overview Redisearch impements a search engine on top of redis, but unlike other redis search libraries, it does not use internal data structures like sorted sets. Inverted indexes are stored as a special compressed data type that allows for fast indexing and search speed, and low memory footprint. This also enables more advanced features, like exact phrase matching and numeric filtering for text queries, that are not possible or efficient with traditional redis search approaches. ## Primary Features: * Full-Text indexing of multiple fields in documents. * Incremental indexing without performance loss. * Document ranking (provided manually by the user at index time). * Field weights. * Complex boolean queries with AND, OR, NOT operators between sub-queries. * Prefix matching in full-text queries. * Auto-complete suggestions (with fuzzy prefix suggestions) * Exact Phrase Search. * Stemming based query expansion in [many languages](http://redisearch.io/Stemming/) (using [Snowball](http://snowballstem.org/)). * Limiting searches to specific document fields (up to 32 fields supported). * Numeric filters and ranges. * Geographical search utlizing redis' own GEO commands. * Supports any utf-8 encoded text. * Retrieve full document content or just ids. * Automatically index existing HASH keys as documents. * Document Deletion (Update can be done by deletion and then re-insertion). * Sortable properties (i.e. sorting users by age or name). ### Not *yet* supported: * Spelling correction * Aggregations ### License: AGPL Which basically means you can freely use this for your own projects without "virality" to your code, as long as you're not modifying the module itself. See [This Blog Post](https://redislabs.com/blog/why-redis-labs-modules-are-agpl/) for more details.