我想让它搜索firebase数据库中文本之间的任何地方[重复]

ykejflvf  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(84)
    • 此问题在此处已有答案**:

Firebase "like" search on string [duplicate](1个答案)
How to perform sql "LIKE" operation on firebase?(5个答案)
2天前关闭。
这是我在firebase数据库中搜索的代码,但它只从一开始搜索,而不是在两者之间。

private void processSearch(String query) {
       Query query1 = databaseReference.child("posts").orderByChild("bookName").startAt(query).endAt(query+"\uf8ff");
       query1.addValueEventListener(new ValueEventListener() {
           @Override
           public void onDataChange(@NonNull DataSnapshot snapshot) {
               for (DataSnapshot dataSnapshot : snapshot.getChildren()){
                   AllPostItemHelper itemHelper = dataSnapshot.getValue(AllPostItemHelper.class);
                   itemHelper.setPostId(dataSnapshot.getKey());
                   allPostItemSearch.add(itemHelper);
               }
               AllPostItemAdapter allPostItemAdapter = new AllPostItemAdapter(allPostItemSearch,getContext());
               postThings.setAdapter(allPostItemAdapter);
           }

           @Override
           public void onCancelled(@NonNull DatabaseError error) {
               
           }
       });
   }

}
xyhw6mcr

xyhw6mcr1#

仅从开始搜索,而不是在中间搜索
这是预期行为,因为您正在执行对Query#startAt()的调用,该调用:
使用给定的orderBy指令或priority作为默认值,创建一个查询,该查询被约束为仅返回值大于或等于给定值的子节点。
但是,如果您需要搜索子字符串,请注意这是不可能的。您只能执行匹配以特定字符串或以字符串范围开头的字符串的查询。
如果你想下载整个节点来搜索客户端的字段,请注意这个解决方案根本不实用。要启用Firebase实时数据库数据的全文搜索,我建议你使用第三方搜索服务,如AlgoliaElasticsearch
如果您考虑在某个时间点尝试使用Cloud Firestore,请参见以下示例:

要了解它如何以相同的方式与Cloud Firestore一起使用,您可以将其与Firebase实时数据库一起使用。

相关问题