Intereting Posts
Нужно ли каждому новому виду создавать новые макеты? Ошибки, управляющие жизненным циклом UnityPlayer в собственном приложении для Android Android – LinearLayout Горизонтальная с обертыванием детей Как узнать, является ли MotionEvent относительным или абсолютным? Android – настройка TextView на выделение жирным шрифтом Eclipse Android XML перескакивает вокруг редактора Панорамная карта google в CoordinatorLayout заставляет recyclerview прокручиваться в библиотеке поддержки дизайна Android 23.0.1 Android Studio: Зависимости моментальных снимков не обновляются должным образом Как обновить виджет приложения в полночь? Изменение формы сплошной цвет во время выполнения внутри Drawable xml, используемого в качестве фона Как сохранить SMS в папку «Входящие» в Android? Как выровнять текст по вертикали? Strange FragmentTransaction в классе FragmentLayout из образца ApiDemos Сообщение об ошибке Android DatagramSocket: EADDRINUSE (адрес уже используется) Сделать вызов API REST из IntentService или AsyncTask?

Как сделать простой поиск в строке в базе данных Firebase?

Я хочу создать простой поиск в своем приложении, но не могу найти что-либо в interwebs об этом, это совсем недавно, чем 2014. Должен быть лучший способ. Существуют функции startAt и endAt, но они не работают должным образом и чувствительны к регистру. Как вы решаете эту проблему? Как эта функция еще не существует в 2016 году?

Solutions Collecting From Web of "Как сделать простой поиск в строке в базе данных Firebase?"

В моем случае я смог частично получить SQL LIKE следующим образом:

databaseReference.orderByChild('_searchLastName') .startAt(queryText) .endAt(queryText+"\uf8ff") .once("value") 

Символ \uf8ff используемый в запросе, является очень высокой точкой кода в диапазоне Unicode (это код частной области использования [PUA]). Поскольку это происходит после большинства обычных символов в Юникоде, запрос соответствует всем значениям, начинающимся с queryText .

Таким образом, поиск по «Fre» я мог бы получить записи, имеющие «Fred, Freddy, Frey» как значение в _searchLastName из базы данных.

Firebase не имеет большого SQL, как встроенные поисковые запросы. Вы можете либо сортировать по значению / ключу, либо вы можете равняться

https://firebase.google.com/docs/database/android/retrieve-data

Примеры можно найти по ссылке выше. Это последняя документация для firebase.

Если вы ищете SQL, как поиски. Затем взгляните на эластичный поиск. Но это увеличит сложность, так как вам нужна платформа для ее включения. Для этого я мог бы рекомендовать Heroku или, возможно, GoogleCloudServers

Вот сообщение в блоге о расширенных поисковых запросах с эластичным поиском https://firebase.googleblog.com/2014/01/queries-part-2-advanced-searches-with.html

Я не знаю об определенности этого подхода, но, используя версию firebase версии 10.2.6 на Android, я могу сделать что-то вроде этого:

 firebaseDatabase.getReference("parent") .orderByChild("childNode") .startAt("[a-zA-Z0-9]*") .endAt(searchString) 

Кажется, что это хорошо работает иногда