首页 > 解决方案 > ArangoDB REGEX_TEST 索引加速?

问题描述

有没有办法在对字符串执行REGEX_TEST()以检索 ArangoDB 中的文档时进行索引?

另外,如果有任何方法可以优化这个,请告诉我

标签: arangodbaql

解决方案


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


推荐阅读