Как сделать простой поиск в строке в базе данных 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) 

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