arangodb - ArangoDB REGEX_TEST 索引加速?
解决方案
AQL 功能没有可用的索引加速REGEX_TEST()
功能,将来不太可能出现。不是因为用户和开发人员没有兴趣,而是因为实际上不可能构建任何类型的索引数据结构来加快正则表达式的评估。
ArangoDB 支持的正则表达式允许许多不同类型的表达式,但是因为它们可以有很大差异,所以几乎没有机会拥有合适的索引。对于相等比较,有哈希索引,这可能是最快的索引。对于范围查询,有跳跃列表索引,当然在计算机科学中还有更多已知的索引类型,但我不知道有一种可以加速任意正则表达式。
如果您的表达式允许,也许有机会添加一个过滤条件,在此之前REGEX_TEST()
可能会使用索引?这将主要限于区分大小写的前缀匹配,例如FILTER REGEX_TEST(doc.str, "a[a-z]*")
可以扩展到FILTER doc.str >= "a" AND doc.str < "b" AND REGEX_TEST(doc.str, "a[a-z]*")
并允许使用跳过列表索引仅评估以 .str
开头的文档上的正则表达式a
。或者一些简单的正则表达式[fm]oo|bar
可以重写为一组相等比较:FILTER doc.str IN ["foo","moo","bar"]
. 也看看ArangoSearch。
推荐阅读
- java - Maven 全新安装无法使用 openjdk 11 执行目标 Maven 故障安全插件
- layout - 如何水平对齐 react-admin 的 RadioButtonGroupInput?
- c++ - 如何从 GDI+ 图元文件对象中获取原始图元文件字节?
- iis - IIS URL重写为html而不是同名的子目录
- java - Android 应用内更新功能实现
- laravel - 在 Laravel Homestead 环境中获取 symfony 项目的供应商文件夹时出现问题
- angular - 如何从 Reactive Form 的动态表中获取值?
- c - 同一动态分配中的两种类型
- java - sqlContext.createDateFrame() 时的 NPE
- ios - 将数值数组的特定索引与 Swift 中的 Int 变量进行比较