【问题标题】:Cosmos DB Search Query which takes Vertex values with any characterCosmos DB 搜索查询,它采用任何字符的顶点值
【发布时间】:2018-01-02 17:08:27
【问题描述】:

我正在使用 Azure cosmos Db,在 cosmosDB 中我有很多顶点,每个顶点都有键值形式的属性。我想找到任何检查以任何字符开头的顶点值的 gremlin 查询。 过滤器查询存在,但不支持天蓝色过滤器查询,那么是否有任何其他 Gremlin 查询采用以任何字符开头的顶点属性值?

【问题讨论】:

    标签: azure-cosmosdb gremlin tinkerpop


    【解决方案1】:

    虽然我自己从未尝试过 CosmosDB,但我不得不不同意 John 的观点。根据 CosmosDB 的文档,对任何属性的任何范围查询都是从索引处理的。因此,如果您想查找所有具有以a 开头的name 属性的person 顶点,您可以这样做:

    g.V().has("person", "name", between("a", "b"))`
    

    TinkerPop 玩具图的具体示例:

    gremlin> g = TinkerFactory.createModern().traversal()
    ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
    gremlin> g.V().has("name", between("m", "n")).valueMap()
    ==>[name:[marko], age:[29]]
    gremlin> g.V().has("name", between("j", "k")).valueMap()
    ==>[name:[josh], age:[32]]
    gremlin> g.V().has("name", between("j", "n")).valueMap()
    ==>[name:[marko], age:[29]]
    ==>[name:[lop], lang:[java]]
    ==>[name:[josh], age:[32]]
    

    【讨论】:

    • 感谢您的回复,但“b”是什么?
    • a之后的字母。
    • 我在我们的应用程序中使用 gremlin 查询进行搜索,所以在搜索中如果我写了“a”,所以我想给出与顶点属性值相关的所有东西,所以我想要这样查询,它将给出顶点属性以该字符开头的顶点。
    • 嗯,这就是你的答案,不是吗?请参阅示例。 markom 开头,joshj 开头。
    • 哇!我一直在寻找比“之间”更困难的东西,真的很强大!谢谢。
    【解决方案2】:

    “以任何字符开头”需要全文搜索,但 Cosmos DB 的文档 https://docs.microsoft.com/en-us/azure/cosmos-db/gremlin-support#gremlin-steps 不支持它。

    JanusGraph 支持全文搜索或字符串搜索,例如:

    g.V().has('bookname', textPrefix('uni'))
    

    更多信息请参考http://docs.janusgraph.org/latest/index-parameters.html#text-search

    【讨论】:

    • 这很有趣。 Spectrum Data Hub 使用“sw”表示开头为:graph.traversal().V().has('bookname', sw('uni')) 支持开头为、结尾为、包含、包含任何、包含所有、通配符和模糊。 (我是 Data Hub 团队的开发人员。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    相关资源
    最近更新 更多