是否可以在 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(
传入的字符串不包含提供的字符串吗?