2011-11-17 10 views
14

Czy ktoś wie, jak zamówić Facebook miejsca na odległość z lokalizacji wyszukiwania? Pamiętaj, że nie chcę zamawiać wyników w aplikacji klienckiej. Chcę, aby serwer Facebooka dostarczał mi uporządkowanych wyników w celu ułatwienia stronicowania. Zawsze chcę dołączać miejsca z kolejnych zapytań na koniec mojej tablicy.Facebook miejsca: wyniki kolejności według odległości

To nie wydaje się możliwe przy użyciu zapytania wykres API, takich jak:

https://graph.facebook.com/search?q=coffee&type=place&center=37.76,-122.427&distance=1000& .... bo nie ma sposobu, aby powiedzieć Facebooka zamówić wyników. Najbliższe miejsce może być ostatnim na liście zwróconych wyników.

Próbowałem odtworzyć powyższe zapytanie przy użyciu FQL, ale mam problem z tym, że pola opisu w tabeli miejsca na Facebooku nie mogą być indeksowane. FQL takich jak:

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 

Problem polega na tym, że pola name i description nie są indeksowane w tabeli miejsce. Oznacza to, że nie wszystkie wyniki są zwracane przez FQL, istnieje wiele brakujących wyników.

Czy ktoś wie, jak to zrobić?

Odpowiedz

12

Wygląda na to, że jest to możliwe przy użyciu tego FQL. Wydaje się, że funkcja contains działa tak samo, jak parametr graficzny API Graph q=. Oto Twój przykład, używając 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 
Powiązane problemy