Facebook места: заказать результаты по расстоянию
Кто-нибудь знает, как заказать места Facebook на расстоянии от места поиска? Обратите внимание: я не хочу заказывать результаты в моем клиентском приложении. Я хочу, чтобы сервер Facebook предоставил мне упорядоченные результаты, чтобы облегчить разбиение на страницы. Я всегда хочу добавлять места от последующих запросов до конца моего массива.
Это не представляется возможным с помощью запроса API графа, например:
https://graph.facebook.com/search?q=coffee&type=place¢er=37.76,-122.427&distance=1000&.... потому что нет способа сообщить Facebook о заказе результатов. Ближайшее место может быть последним в списке возвращаемых результатов.
Я пытаюсь реплицировать вышеуказанный запрос, используя FQL
, но имею проблему в том, что поля имени и описания в таблице таблицы Facebook не индексируются. FQL, например:
SELECT
page_id, name, display_subtext, description,
distance(latitude, longitude, "37.76", "-122.427"), checkin_count
FROM place
WHERE ((distance(latitude, longitude, "37.76", "-122.427") < 25000)
AND (strpos(lower(name), "coffee") >= 0
OR strpos(lower(description), "coffee") >= 0))
ORDER BY distance(latitude, longitude, "37.76", "-122.427") ASC
LIMIT 20 OFFSET 0
Проблема заключается в том, что поля name
и description
не индексируются в таблице мест. Это означает, что не все результаты возвращаются FQL, есть много отсутствующих результатов.
Кто-нибудь знает, как это сделать?
Ответы
Ответ 1
Кажется, что это возможно с помощью этого FQL. Функция contains
работает так же, как и параметр q=
Graph API. Здесь ваш пример с помощью contains
SELECT page_id, name, description, latitude, longitude, checkin_count, distance(latitude, longitude, "37.76", "-122.427")
FROM place
WHERE distance(latitude, longitude, "37.76", "-122.427") < 1000
AND CONTAINS("coffee")
ORDER BY distance(latitude, longitude, "37.76", "-122.427")
LIMIT 20