如何优化Android Studio和Firestore之间的查询?

时间:2019-04-26 16:02:08

标签: android google-cloud-firestore

在我的Firestore集合中,每个文档都有一个我用于标签的数组字段。为了简化这种情况,我删除了其他字段。

enter image description here enter image description here

另一方面,在Android项目中,我有exampleList如下。

ArrayList<String> exampleList = new ArrayList<String>();
        exampleList.add("alan");
        exampleList.add("jack");
        exampleList.add("frank");

我必须构建一个函数/查询,该函数/查询将给我提供其中exampleList个项目更为频繁的文档ID。在上面的示例中,输出应为378qjb3mrLckHuI0GO1p,因为它包含alanfrankL3qUiqzbglryx66VZ8BD仅包含alan

我当时正在考虑像这样设置功能/查询:

public void searchTags() {
    ArrayList<Long> frequencyList = null;
    ArrayList<String> exampleList = new ArrayList<String>();
    exampleList.add("alan");
    exampleList.add("jack");
    exampleList.add("frank");
    mRef.get()
            .addOnSuccessListener(queryDocumentSnapshots -> {
                for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
                    Store store = documentSnapshot.toObject(Store.class);
                    for (String tag : store.getTags()) {
                        for (String item : exampleList) {
                            if (tag == item) {
                                frequencyList.add(store.getId());
                            }
                        }
                    }
                }
                // return the most frequent string of frequencyList
            });
    return;
}

考虑到我在exampleList和10.000个商店中可以有1.000个商品,每个商品有20个标签,因此代码必须进行这种比较,例如200.000.000次。真的太多了有更快的方法吗?我可以直接在Firestore中移动查询吗?

0 个答案:

没有答案