RediSearch 1.4 发布说明
条件更新。模式修改。查询拼写纠正。语音匹配。搜索中的更多模糊性。检索和更改运行时配置。无限自动完成结果。
需求
RediSearch v1.4.28 需要:
- 最低Redis兼容版本(数据库):4.0.0
- 最低Redis企业软件版本(集群):5.0.0
v1.4.28 (2020年5月)
这是版本1.4的维护发布。
标题:
- 此版本提高了整体稳定性,并修复了上一个版本后发现的问题。
详情:
- Bug修复:
- #1218 在没有并发的情况下运行并使用游标API时可能崩溃。
v1.4.27 (2020年4月)
标题:
- 此版本提高了整体稳定性,并修复了上一个版本后发现的问题。
详情:
- 功能:
- #1172 添加了
exists
函数,可用于条件更新REPLACE PARTIAL
以检查文档中是否存在某个字段。
- #1172 添加了
- 小改进:
- #1172 在IF条件中,对'or'/'and'子句的右侧进行惰性求值。
- Bug修复:
v1.4.26 (2020年3月)
标题:
- 此版本提高了整体稳定性,并修复了上一个版本后发现的问题。
详情:
- 修复罕见的
FORK GC
崩溃问题,该问题由访问未初始化的变量引起。
v1.4.25 (2020年3月)
标题:
- 此版本提高了整体稳定性,并修复了上一个版本后发现的问题。
详情:
v1.4.24 (2020年1月)
标题:
- 此版本提高了整体稳定性,并修复了上一个版本后发现的问题。
详情:
v1.4.23
标题:
- 此版本提高了整体稳定性,并修复了上一个版本后发现的问题。
详情:
- Bug修复:
- 当游标超时且游标未被消耗时发生的内存泄漏。
v1.4.22
标题:
- 此版本提高了整体稳定性,并修复了上一个版本后发现的问题。
详情:
- Bug修复:
- FILTER选项与协调器一起使用时无法正常工作。
- 当游标与排序字段结合时出现内存泄漏。
v1.4.21
标题:
- 此版本提高了整体稳定性,并修复了上一个版本后发现的问题。
详情:
- Bug修复:
- #1031 当与
NOINDEX
字段一起使用时,高亮显示崩溃。
- #1031 当与
v1.4.20 (2020年1月)
更新紧急程度:中等 这是版本1.4的维护发布。
此版本提高了整体稳定性,并修复了上一个版本后发现的问题。
- 改进
- #1020 提高了读取不可排序字段的性能。
- Bug修复
v1.4.19 (2019年12月)
更新紧急程度:中等 这是版本1.4的维护发布。
此版本提高了整体稳定性,并修复了上一个版本后发现的问题。
v1.4.18(2019年11月)
更新紧急程度:中等 这是版本1.4的维护发布。
此版本提高了整体稳定性,并修复了上一个版本后发现的问题。
- 错误修复
- #947 修复了可能导致崩溃和潜在数据损坏的FORK GC管道的短读取问题
v1.4.17 (2019年10月)
更新紧急程度:中等 这是版本1.4的维护发布。
此版本提高了整体稳定性,并修复了上一个版本后发现的问题。
- 功能:
- #779 由于歧义原因,添加了
to_number()
和to_str()
函数
- #779 由于歧义原因,添加了
- 改进
- #891 所有的内存分配现在都将使用redis内存分配器。这意味着所有的内存将在redis的
INFO MEMORY
命令中正确暴露。
- #891 所有的内存分配现在都将使用redis内存分配器。这意味着所有的内存将在redis的
v1.4.16 (2019年9月)
更新紧急程度:中等 这是版本1.4的维护发布。
此版本提高了整体稳定性,并修复了上一个版本后发现的问题。
主要特点:
- #883 Forkgc 优化 - 引入新的配置参数
FORK_GC_CLEAN_THRESHOLD
。RediSearch 只会在未清理的文档数量超过此阈值时开始清理。
主要修复:
v1.4.15 (2019年8月28日)
更新紧急程度:中等 这是版本1.4的维护发布。
此版本提高了整体稳定性,并修复了上一个版本后发现的问题。
主要修复:
- #866 - 修复由于从建议树中删除不存在的术语导致的RDB损坏。
- 当Redis退出时,由FORK垃圾回收创建的子进程现在将相应关闭。
- 对于非临时和交错索引:当索引被删除时,索引器线程现在会被关闭。
v1.4.14 (2019年8月20日)
更新紧急程度:中等 这是版本1.4的维护发布。
此版本提高了整体稳定性,并修复了上一个版本后发现的问题。
主要修复:
- #851 在交错模式(非安全模式)下,由并发更新删除的文档将被忽略。
v1.4.13 (2019年8月8日)
更新紧急程度:中等 这是版本1.4的维护发布。
此版本提高了整体稳定性,并修复了之前版本中发现的问题。
主要修复:
v1.4.12 (2019年8月5日)
更新紧急程度:中等 这是版本1.4的维护发布。
此版本提高了整体稳定性,并修复了之前版本中发现的问题。
主要特点:
- #741 允许中文分词识别标点符号的 -escape
主要修复:
v1.4.11 (2019年6月)
更新紧急程度:中等
此版本仅增加了对预览版1.4.10的别名支持。
- 新增功能
- #731 添加索引别名功能。这允许用户提供(或删除)索引的“链接”。相关命令为 FT.ALIASADD、FT.ALIASDEL 和 FT.ALIASUPDATE。
v1.4.10 (2019年5月28日)
更新紧急程度:中等
这是版本1.4的维护发布。
此版本提高了整体稳定性,并修复了之前版本中发现的问题。
主要修复:
- 修复在FT.AGGREGATE上结合SORT和APPLY时的内存泄漏问题
v1.4.9 (2019年5月18日)
更新紧急程度:中等
这是版本1.4的维护发布。
此版本提高了整体稳定性,并修复了之前版本中发现的问题。
主要修复:
- Fork GC 现在将压缩倒排索引的空块。
- 修复在使用GROUPBY进行聚合时无效的内存访问问题。
- 修复了在使用SORTBY时使用limit可能会返回重复结果的问题。
已知问题:
- 在FT.AGGREGATE中结合使用SORT和APPLY时出现内存泄漏问题。此问题已在1.4.10版本中修复。建议直接升级到1.4.10版本。
v1.4.8 (2019年4月29日)
更新紧急程度:低
技术发布,没有更改或修复。
v1.4.7 (2019年4月29日)
更新紧急程度:中等
这是版本1.4的维护发布。
此版本提高了整体稳定性,并修复了之前版本中发现的问题。
主要修复:
- 修复在查询时删除并重新创建相同索引可能导致崩溃的问题。
v1.4.6 (2019年4月8日)
更新紧急程度:中等
这是版本1.4的维护发布。
此版本提高了整体稳定性,并修复了之前版本中发现的问题。
主要修复:
- 加载可能由1.4以下版本生成的损坏的RDB文件
- 修复
REPLACE PARTIAL
可能无法正常工作的问题 (#621)
v1.4.5 (2019年3月)
更新紧急程度:低
这是版本1.4的维护发布。
此版本提高了整体稳定性,并修复了之前版本中发现的问题。
主要修复:
- 修复了FORK GC导致redis rdb fork失败的问题
v1.4.4 (2019年2月21日)
更新紧急程度:低
这是版本1.4的维护发布。
此版本提高了整体稳定性,并修复了之前版本中发现的问题。
主要修复:
- 修复了Fork GC上的内存泄漏问题
- 修复了在Fork GC释放GIL后关闭键的问题(在极少数情况下可能导致崩溃)
v1.4.3 (2019年2月4日)
更新紧急程度:低
这是版本1.4的维护发布。
此版本提高了整体稳定性,并修复了之前版本中发现的问题。
主要修复:
- 修复了内存池销毁时的内存泄漏问题
- 修复了在使用 fork GC(预览版)运行时进程崩溃的问题
- 修复了在使用 Tags 时 Fixed fork GC(预览版)死锁的问题
- 修复了索引创建和删除时的内存泄漏问题
v1.4.2 (2018年11月27日)
更新紧急程度:低
这是版本1.4的维护发布。
此版本提高了整体稳定性,并修复了发现的问题。
v1.4.1 (2018年11月12日)
更新紧急程度:中等
这是1.4版本的维护发布,下一个计划发布的版本是2.0。
此版本提高了整体稳定性,并专注于垃圾收集器的性能改进。它还包括:
- 新增:运行时配置
- 更改:无限自动完成结果
垃圾收集器
RediSearch 使用垃圾收集器从内部数据结构中移除已删除的文档。
在此版本中,垃圾回收机制在效率和性能方面得到了改进,即它回收的内存量更多,速度也更快。改进后的机制使用了分叉线程。更多详细信息可以在这篇文章中找到:How We Increased Garbage Collection Performance with RediSearch 1.4.1。
改进的收集机制目前是*实验性的- 并且默认情况下未启用。启用新的垃圾收集机制需要在加载时将GC_POLICY
配置选项设置为FORK
,例如:
redis-server --loadmodule ./redisearch.so GC_POLICY FORK
运行时配置
RediSearch的配置是通过在加载时传递给模块的参数来应用的。此版本引入了新的FT.CONFIG
命令,该命令允许检索当前配置以及在运行时更改它。
无限自动完成结果
此版本移除了FT.SUGGET
的10个结果限制 - 你可以根据需要将MAX num
设置得尽可能高。
v1.4.0 (2018年8月)
**更新紧急程度:*- 中等 - 主要是由于大量修复
此版本提高了RediSearch的整体稳定性和性能。它还提供了更好的支持,适用于文档持续更新的用例。新功能包括:
- 条件更新
- 模式修改
- 查询拼写纠正
- 语音匹配
- 增强:搜索中的更多模糊性
持续更新
与大多数搜索引擎一样,RediSearch 设计用于维护主要追加的索引。要更新现有文档,实际上是替换文档 - 即删除并添加到索引中。
由于RediSearch提供实时索引和搜索功能,它有时被用于搜索近实时数据(或其处理结果)。在这种情况下,索引文档的数量大多保持静态,但它们的内容会不断更新。
为了支持这个用例,RediSearch 已经在内部进行了重新设计,使用64位内部文档ID,以便索引可以维持高更新吞吐量而不会溢出。此外,因此,已经投入了大量精力来改进内存管理和垃圾回收。
条件更新
IF
子命令已被添加到 FT.ADD
中。当与现有的 REPLACE [PARTIAL]
子命令一起使用时,只有在提供的条件评估为真值时,文档才会更新,否则将返回一个特殊的 NOADD
回复。
模式修改
FT.ALTER
命令已被引入,提供了向现有索引定义中添加新字段的能力。这些新添加的字段内容仅对新文档或更新文档进行索引。
查询拼写纠正
查询拼写纠正,也称为“您是不是要找”,现在通过FT.SPELLCHECK
命令提供。它能够为可能拼写错误的搜索词生成建议。更多详情请参阅查询拼写纠正。
语音匹配
语音匹配,即“Jon 还是 John?”,现在通过 PHONETIC
文本字段属性得到支持。此类字段中的术语也会根据其语音等效项进行索引,搜索结果默认包含这些内容。更多详情请参阅 Phonetic Matching。
搜索中的更多模糊性
模糊匹配操作符 '%' 现在可以重复最多三次来指定 Levenshtein 距离。这意味着查询 %hello%
、%%hello%%
和 %%%hello%%%
将分别对 'hello' 进行 LD 为 1、2 和 3 的所有术语进行模糊匹配。