Заказать Facebook Места результаты по расстоянию - PullRequest
14 голосов
/ 17 ноября 2011

Кто-нибудь знает, как заказать места на Facebook по расстоянию от места поиска?Обратите внимание, что я не хочу заказывать результаты в своем клиентском приложении.Я хочу, чтобы сервер Facebook предоставил мне упорядоченные результаты для облегчения нумерации страниц.Я всегда хочу добавлять места из последующих запросов в конец моего массива.

Это кажется невозможным при использовании запроса API графа, например:

https://graph.facebook.com/search?q=coffee&type=place&center=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 Ответ

12 голосов
/ 29 июня 2012

Кажется, что это возможно, используя этот 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
...