2011-11-17 14 views
14

Facebookの場所を検索場所から遠くに注文する方法を知っている人はいますか?私はクライアントアプリケーションで結果を注文したくないことに注意してください。私は、Facebookサーバがページ付けを容易にするために順序付けられた結果を私に提供したい。私は常に配列の最後に後続のクエリの場所を追加したい。結果を注文するのFacebookを伝える方法がないので....Facebookの場所:距離による結果の注文

https://graph.facebook.com/search?q=coffee&type=place&center=37.76,-122.427&distance=1000&

これ

は、次のようなグラフAPIのクエリを使用して可能ていないようです。最も近い場所は、返された結果のリストの最後に置くことができます。

FQLを使用して上記のクエリを複製しようとしましたが、Facebookのplaceテーブルの& descriptionフィールドの名前がインデックスできないという問題があります。 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 

問題はフィールドnamedescriptionが行わテーブルにインデックス可能ではないということです。これは、すべての結果がFQLによって返されるわけではなく、多くの欠落した結果があることを意味します。

誰でもこれを行う方法を知っていますか?

答えて

12

このFQLを使用しているようです。 contains関数は、q=グラフ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 
関連する問題