我有一个像 g.V().hasLabel('test').has('name',TextP.containing('ar')) 这样的 gremlin 查询。但这个查询正在进行区分大小写的搜索。它没有返回名为 Ar 的顶点。
假设我在测试标签下有 2 个顶点,它们的名称如 Arhan 和 arhan。如果我执行 gremlin 查询 g.V().hasLabel('test').has('name',TextP.containing('ar')),它只返回 arhan 记录。但我希望无论情况如何,这两条记录都能被检索。
您的选择将取决于 CosmosDB 支持的内容。我相信 Gremlin 支持的版本已经很旧了。
Gremlin 现在有一个
regex
谓词(在 TinkerPop 3.6 中添加),并且在最新版本 (3.7.0) 中具有一系列新的字符串函数,允许在测试之前对字符串进行小写和大写。
最后,一些实现允许与外部全文搜索索引集成。
我不确定 CosmosDB 是否支持这些选项。如果没有,那么您真正能做的最好的事情就是使用
or
逻辑测试所有可能的变化 - 这可能会变得混乱,但可能是您唯一的选择,类似于:
or(
has('name',TextP.containing('ar'),
has('name',TextP.containing('Ar')
)