Azure cosmosdb Azure Cosmos DB图形通配符搜索

Azure cosmosdb Azure Cosmos DB图形通配符搜索,azure-cosmosdb,gremlin,Azure Cosmosdb,Gremlin,是否可以在Azure Cosmos Graph DB中搜索包含的顶点属性 例如,我想查找名字中有'Jr'的所有人 g.V().hasLabel('person').has('name',within('Jr')).values('name') 似乎(“”)函数中的只过滤完全等于'Jr'的值。我在找一家商店理想情况下不区分大小写。目前CosmosDB没有任何文本匹配功能可用。但是,我能够通过使用UDF(用户定义函数)实现通配符搜索功能,UDF使用Javascript match()函数: fun

是否可以在Azure Cosmos Graph DB中搜索包含的顶点属性

例如,我想查找名字中有
'Jr'
的所有人

g.V().hasLabel('person').has('name',within('Jr')).values('name')

似乎(“”)函数中的
只过滤完全等于
'Jr'
的值。我在找一家商店理想情况下不区分大小写。

目前CosmosDB没有任何文本匹配功能可用。但是,我能够通过使用UDF(用户定义函数)实现通配符搜索功能,UDF使用Javascript match()函数:

function userDefinedFunction(input, pattern) { return input.match(pattern) !== null; };
然后,您必须将查询编写为SQL并使用您定义的UDF(下面的示例假设您调用函数“REGEX”)

SELECT * FROM c where(udf.REGEX(c.name[0]._value, '.*Jr.*') and c.label='person')

性能将远远不够理想,因此您需要根据您的延迟和成本角度来决定解决方案是否可以接受。

Azure团队现在已经实施了

Azure团队已经在他们的反馈网站上“宣布”了这一点

我还没有测试所有的代码,但是包含的代码对我来说很有用(尽管它区分大小写)

TextP.startingWith(字符串)

传入字符串是否以提供的字符串开头

TextP.endingWith(字符串)

传入字符串是否以提供的字符串结尾

TextP.containing(字符串)

传入字符串是否包含提供的字符串

TextP.notStartingWith(字符串)

传入字符串是否以提供的字符串开头

TextP.notEndingWith(字符串)

传入字符串是否以提供的字符串结尾

TextP.notContaining(字符串)

传入字符串是否不包含提供的字符串


通常使用Tinkerpop/gremlin,您可以执行类似于
g.V().hasLabel('person.).filter{it.getProperty('name').toLowerCase().contains('jr')}.values('name'))
但Cosmos DB Graph尚不支持闭包。一旦闭包可用,将对此线程作出响应。我在使用Titan时使用了textContains,但这在Cosmos g.V()中似乎不可用。hasLabel('person')。has('name',textContains('Jr'))Hi来自门户,我们可以这样做,但从Java SDK可以吗?
g.V().hasLabel('doc').or(__.has('title', containing('truc')), __.has('tags', containing('truc')))