Azure Cosmos DB Graph Wildcard search



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

例如,我想找到所有名下有'Jr'的人?

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

似乎within('')函数只过滤完全等于'Jr'的值。我正在寻找一个包含。理想情况下不区分大小写。

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

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 团队现在已经为 String 实现了 Tinkerpop 谓词

Azure 团队已在其反馈网站上向用户"宣布"了这一点。

我还没有测试所有这些,但包含适合我的作品(虽然区分大小写(

g.V().hasLabel('doc').or(__.has('title', containing('truc')), __.has('tags', containing('truc')))

TextP.startingWith(string(

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

TextP.endingWith(string(

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

TextP.containing(string(

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

TextP.notStartingWith(string(

传入的字符串不是以提供的字符串开头吗?

TextP.notEndingWith(string(

传入的字符串不以提供的字符串结尾吗?

TextP.notContaining(string(

传入的字符串不包含提供的字符串吗?

最新更新