如何快速获得搜索结果?

时间:2017-12-02 05:37:22

标签: java android search firebase-realtime-database

我在firebase数据库中有一个对象数据库,我需要一个函数来返回一些搜索结果;如果我收到一个字符串来搜索"标题"对于某些子字符串的对象方面,我需要返回满足该字符串的所有对象的列表。我目前正在详尽地进行,即检查每本书的字段并将其添加到列表中。

不幸的是,这种方法的速度非常快:随着列表变大,生成此列表所需的时间大得令人无法接受。然而,可接受的解决方案是一次返回一个对象,以便动态地增加列表。我发现正常的搜索功能似乎使用了这一点,视频/音频缓冲也必须连续获取数据。

但我无法弄清楚如何在Android上用Java实现这一点。我甚至没有任何相似的东西,但我确信这是一种方法。有什么建议吗?

**编辑:**因此,我有一个adroid应用程序,我需要在其上编写一个函数供我的合作伙伴使用。此函数必须收集Book数据对象并将其返回。我目前在数据库中只有32本书,所以我认为我遇到的任何时间都是由于从firebase获取数据。必须有一些方法可以一次得到一本书,以减少用户的感知等待时间,但我不知道如何处理这个问题。

1 个答案:

答案 0 :(得分:1)

您可以使用Firebase sdk提供的orderByChild方法。这是一个示例代码:

  titlesDatabaseReference.orderByChild("title").equalTo("the title you search for").
              addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            //Do whatever you want with the snapshot
                                }
                            }
                        }
                    });

您还可以使用limitToFirst和limitToLast方法来限制搜索结果。