当前位置: 首页 > 知识库问答 >
问题:

在Firebase中有一个包含搜索查询是可能的?[副本]

孔和畅
2023-03-14
Query firebaseSearchQuery = 
myRef.orderByChild("from").startAt(searchText).endAt(searchText+"\uf8ff");
Query firebaseSearchQuery = 
myRef.orderByChild("from").contains(searchText);

共有1个答案

阴雪风
2023-03-14

对于小型数据集,可以使用以下代码:

ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<String> list = new ArrayList<>();
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String from = ds.child("from").getValue(String.class);
            list.add(from);
        }

        for(String str : list) {
            if(str.contains(searchText)) {
                Log.d("TAG", "String found!");
            }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
myRef.addListenerForSingleValueEvent(valueEventListener);

对于大型数据集,不建议使用此解决方案,因为您需要下载整个节点才能进行搜索。在这种情况下,推荐使用Algolia或Elasticsearch。

如果你打算使用Cloud Firestore,我推荐你从这篇帖子中看到我的答案。想要了解更多信息,我也推荐你看这个视频。

 类似资料:
  • 表的结构是: null 以下是我目前掌握的信息:

  • 我对Sumologic中的搜索查询有点迷茫。我需要获取包含

  • 我想从firebase搜索,其中的名字包含的字符从搜索框在任何位置的名字?有谁能像这样帮帮我吗

  • 问题内容: 我必须找到具有字符串的匹配文档,例如:在某些“键”范围内的字符串:“ sky”。当我编写单独的匹配和范围查询时,我从ES获得输出,但是合并在一起时会抛出异常。 范围查询: 匹配查询: 组合查询: 组合查询在执行时会引发错误: 引发HTTP_EXCEPTIONS.get(状态代码,TransportError)(状态代码,error_message,Additional_info)ela

  • 问题内容: 该表的结构为: chats –> randomId –>–> participants –>–>–> 0: ‘name1’ –>–>–> 1: ‘name2’ –>–> chatItems 等等 我想做的是查询聊天表,以通过传入的用户名字符串查找所有持有参与者的聊天。 这是我到目前为止的内容: 问题答案: 您当前的数据结构非常适合查找特定聊天的参与者。但是,这不是一个很好的反向搜索结构

  • 问题内容: 我有一个带有3个索引的elasticsearch集群: 因此,现在我需要运行处理多个索引的查询。 例如: 获取在页面X中注册的用户的性别。 ( 要获取此信息,我需要来自多个索引的信息。 ) 这可能吗?也许整合Hadoop? 问题答案: 在Elasticsearch本身中,这非常容易!任何时候您指定索引时,都可以用逗号分隔其他索引。 您也可以使用_all搜索所有索引。 这是来自Elast