Firebase查询多个Android客户端密钥

时间:2017-07-13 07:03:46

标签: android firebase firebase-realtime-database

我在facedetails中有14个属性我想查询并找到每个属性最接近的匹配,并且只有当14个属性与人脸匹配时我的代码才会返回person对象。 以下是数据库中的示例:

"faceDetails":{
    "mCalculateFaceSizeHeight" : 121,
    "mCalculateFaceSizeWidth" : 107,
    "mCalculateLeftEyeBrowSizeHeight" : 31,
    "mCalculateLeftEyeBrowSizeWidth" : 43,
    "mCalculateLeftEyeSizeHeight" : 64,
    "mCalculateLeftEyeSizeWidth" : 10,
    "mCalculateMouthSizeHeight" : 24,
    "mCalculateMouthSizeWidth" : 30,
    "mCalculateNoseSizeHeight" : 43,
    "mCalculateNoseSizeWidth" : 71,
    "mCalculateRightEyeBrowSizeHeight" : 43,
    "mCalculateRightEyeBrowSizeWidth" : 52,
    "mCalculateRightEyeSizeWidth" : 14,
    "mCalculatedRightEyeSizeHeight" : 36
            }

目前在Android设备中,我有类似的内容。

Query personLeftEyeSizeWidthQueryendAt = myRef.orderByChild("mCalculateLeftEyeSizeWidth")
                .endAt(mCalculateLeftEyeSizeWidth())
                .limitToLast(1);
        personLeftEyeSizeWidthQuery.addChildEventListener(new ChildEventListener() {....

Query personLeftEyeSizeWidthQueryStartAt = myRef.orderByChild("mCalculateLeftEyeSizeWidth")
                    .startAt(mCalculateLeftEyeSizeWidth())
                    .limitToFirst(1);
            personLeftEyeSizeWidthQuery.addChildEventListener(new ChildEventListener() {....


My index is like this:
".indexOn": [
        "mCalculateLeftEyeSizeWidth",
        "mCalculateLeftEyeSizeHeight",
        "mCalculateRightEyeSizeWidth",
        "mCalculatedRightEyeSizeHeight",
        "mCalculateNoseSizeWidth",
        "mCalculateNoseSizeHeight",
        "mCalculateMouthSizeWidth",
        "mCalculateMouthSizeHeight",
        "mCalculateLeftEyeBrowSizeWidth",
        "mCalculateLeftEyeBrowSizeHeight",
        "mCalculateRightEyeBrowSizeWidth",
        "mCalculateRightEyeBrowSizeHeight",
        "mCalculateFaceSizeWidth",
        "mCalculateFaceSizeHeight"

      ]

我的问题是,每次单个查询都会向前推进28个单个查询,或者有更好的方法来组合所有28个查询。 我不想放弃其中的一些,因为面部识别准确性对于找到匹配非常重要。 让我知道如果我继续28单一查询,然后检查每个查询的关键,看他们都匹配同一个人或可能是另一种方法。

由于 伊兰格罗斯

1 个答案:

答案 0 :(得分:2)

当前的Firebase数据库API没有提供组合查询的确切方法。
但是,the video来自Firebase的人员告诉我们如何构建数据库以减轻负担。
我建议,分离leftEyeHeightleftEyeWidth你可以简单地leftEyeSize合并它们,其值可以写成(leftEyeHeight, leftEyeWidth)即使你手动编写每个查询,这也会使你的问题减少一半