2016-10-10 2 views
0

В настоящее время я просматриваю базу данных, которая должна служить базой для мобильного приложения.Firebase/GeoFire - Самый популярный объект в этом месте


Прямо сейчас я смотрю на Firebase, и сейчас мне нравится это очень много.


Это требование, чтобы иметь возможность принести

  1. наиболее популярные пункты
  2. на определенном месте
  3. (возможно, в будущем: дополнительно для определенный временной диапазон, который был бы атрибутом предмета)

из базы данных.


Так что, естественно, я наткнулся на GeoFire, который предоставляет возможности запросов на основе местоположения для Firebase.

К сожалению - по крайней мере, насколько я понял - нет возможности заказать результаты по атрибуту, отличному от расстояния. (исправьте меня, если я ошибаюсь).

Итак, что мне делать, если меня не интересует расстояние (я хочу только иметь элементы в определенном радиусе, независимо от того, как далеко от центра), но и в коэффициенте популярности (например, для простоты простое число, которое символизирует популярность)?

ВНИМАНИЕ:
Фильтрация/Сортировка по стороне клиента не вариант (или по крайней мере не менее предпочтительным), как результирующий набор потенциально может вырасти до бесконечной суммы.


Первая версия приложения будет для андроида, поэтому клиентская библиотека Firebase Java будет использоваться на первом этапе.


Есть ли возможности решить эту проблему или это Firebase из гонки, а не подходящий кандидат на работу?

+0

Невозможно добавить дополнительное условие к серверному запросу Geofire. Ну ... строго говоря, вы могли бы найти способ расширить магию Geohash, чтобы добавить третье число (в дополнение к lat и lon) в микс.Но, по возможности, я сомневаюсь, что это возможно для большинства из нас. –

+0

Хорошо, спасибо за быстрый ответ. Печально, мне бы очень понравилось использовать Firebase в качестве бэкэнд, но этот запрос, к сожалению, имеет решающее значение. Я посмотрю, найду ли я еще одно решение (например, используйте промежуточный сервер, который делает тяжелые вещи, прежде чем отправлять ответ на запрос клиента для этих особых случаев использования). – JDC

ответ

0

Невозможно добавить дополнительное условие к серверному запросу Geofire.

Модель запроса базы данных Firebase позволяет фильтровать только одно свойство. Geofire уже выполняет, казалось бы, невероятный подвиг фильтрации как по широте, так и по долготе. Он делает это через магию Geohashes, которые объединяют широту и долготу в одну строку.

Строго говоря, вы могли бы найти способ расширить магию Geohash, чтобы добавить третье число в микс. Но, по возможности, я сомневаюсь, что это возможно для большинства из нас.

Смежные вопросы