Gremlin图数据库如何实现忽略大小写的StartsWith查询
Gremlin忽略大小写前缀匹配查询解决方案
你当前使用的TextP.startingWith()默认是大小写敏感的,要实现忽略大小写的前缀匹配可以参考以下几种方案:
方案1:正则匹配(通用原生Gremlin方案)
用TextP.regex()搭配正则的不区分大小写标记实现,查询语句如下:
g.V().hasLabel('Product').has('name', TextP.regex('(?i)^acc.*'))
- 语句说明:
(?i)是正则内置的忽略大小写标识,^匹配字符串开头,.*匹配后续任意字符,完全等效于忽略大小写的前缀匹配逻辑。
方案2:统一转大小写后匹配
如果你的运行环境不支持正则谓词,可以将字段值和查询前缀都转为相同大小写后再做前缀匹配:
g.V().hasLabel('Product').filter(values('name').toLower().is(TextP.startingWith('acc')))
- 注意:该方案如果没有对应功能的索引支撑,大数据量下会触发全量扫描,性能较差。如果该查询是高频场景,建议提前存储字段的全小写/全大写冗余字段,直接对冗余字段做前缀匹配,性能最优。
方案3:图数据库厂商扩展谓词
大部分商用或开源图数据库都有自研的文本查询扩展,比如JanusGraph、Neptune等都提供了原生的忽略大小写文本匹配谓词,性能远好于上面的通用方案,可以直接查阅你使用的图数据库的官方文档获取对应语法。
内容的提问来源于stack exchange,提问作者user3794061
相关产品推荐
相关产品推荐

