以下是一个人的各种属性。
我想实现一个搜索,搜索结果来自以下任何字段: specializationField
, hospitalName
或 fullName
有相同的字母。
例如,如果我搜索“sh”,此人应该出现在字段中,因为医院名称相似。
这是我用来搜索全名的代码:
FirebaseRecyclerOptions<DoctorHelperClass> options =
new FirebaseRecyclerOptions.Builder<DoctorHelperClass>()
.setQuery(FirebaseDatabase.getInstance().getReference().child("Doctor").orderByChild("fullName").startAt(s.toUpperCase()).endAt(s.toLowerCase()+"\uf8ff"), DoctorHelperClass.class)
.build();
adapter = new DoctorsAdapters(options, FindDoctorActivity.this);
adapter.startListening();
binding.rvListDoctors.setAdapter(adapter);
请帮帮我
2条答案
按热度按时间fslejnso1#
正如@puf所说,你不能在firebase实时数据库上实现它,但你可以在客户端实现,这意味着在android部分。
首先,你不能使用
FirebaseUI
您当前正在使用的,而您需要使用https://firebase.google.com/docs/database/android/read-and-write#read_data一旦你添加了所有的医生名单。可以使用arraylist对它们进行比较。
你可以这样做。
我希望你了解它的概念。
dsf9zpds2#
firebase实时数据库中不支持或不支持条件。您必须执行多个查询并在客户端合并结果,或者创建一个专用字段来执行此搜索。
但考虑到您的问题,您可能正在寻找远远超出firebase实时数据库处理范围的文本搜索功能。我建议使用一个额外的(甚至其他)数据库来满足您的文本搜索需求,而不是试图将这些需求强加给firebase。
另见:
使用firebase实时数据库创建搜索功能
如何在firebase数据库中搜索字符串中的任意位置-android
在没有服务器端代码的firebase中搜索
firebase和索引/搜索