2013-12-15 7 views
7

मुझे एक ऐसा एप्लिकेशन बनाने की आवश्यकता है जिसमें तीन यूआरएल के लिए तीन इनपुट फ़ील्ड हों। एप्लिकेशन को फिर फेसबुक पर सभी सार्वजनिक पोस्टों की खोज करने और उन विशिष्ट उपयोगकर्ताओं को ढूंढने वाले उपयोगकर्ताओं को खोजने की आवश्यकता है। मैं इस कोड का उपयोग कर रहा हूं:सभी सार्वजनिक फेसबुक पोस्टों की क्वेरी

$q = "http://www.someurl.com"; 
$search = $facebook->api('/search?q=' . $q .'&type=post&limit=200'); 
foreach ($value as $fkey=>$fvalue) { 
    if(isset($fvalue['from']['name'])) 
    { 
     echo $fvalue['from']['name']."<br />"; 
    } 
    }} 

यह 200 फेसबुक उपयोगकर्ता के नामों को प्रिंट करता है जो एक विशिष्ट लिंक पोस्ट करते हैं। लेकिन, जैसा कि मैंने ऊपर बताया है, मुझे एकाधिक यूआरएल मैच खोजने की जरूरत है। इस दृष्टिकोण का उपयोग करके, मुझे तीन क्वेरी कॉल और फिर क्रॉस-रेफरेंस परिणाम बनाना होगा और उन सभी उपयोगकर्ताओं को प्राप्त करना होगा जो सभी तीन परिणाम सूचियों पर दिखाई देते हैं। क्या केवल एक कॉल में आवश्यक परिणामों को वापस करने के लिए क्वेरी बनाने का कोई तरीका है? अब मैं एफक्यूएल शक्तिशाली उपकरण है, लेकिन मुझे लगता है कि इसका उपयोग इस तरह के सार्वजनिक प्रश्नों के लिए नहीं किया जा सकता है। क्या मैं वास्तव में केवल सार्वजनिक ग्राफ एपीआई तक ही सीमित हूं? और यदि ऐसा है, तो क्या केवल ग्राफ एपीआई का उपयोग करके जटिल क्वेरी बनाना संभव है?

संपादित करें # 1: मैं FQL निम्नलिखित उपयोग करने की कोशिश:

SELECT source_id FROM stream WHERE 
CONTAINS('http://www.incgamers.com/2013/12/doom-20th-anniversary-today-true-classic') 
AND CONTAINS('http://kotaku.com/5917693/ten-years-of-civ-ii-lock-the-world-in-perpetual-war') 
AND CONTAINS('http://www.youtube.com/watch?v=1TBxdXm3DP0') limit 200 

मैं समझता हूँ, यह जो अपने अमेरिकन प्लान धारा में इन तीन लिंक उन लौटना चाहिए। हालांकि, यह मामला नहीं है। क्या मैं यह सब गलत कर रहा हूँ?

उत्तर

2

पोस्ट का संदेश भाग में केवल एक यूआरएल की उपस्थिति की जांच करना एक आसान तरीका होगा। यह fql काम करना चाहिए:

SELECT message FROM stream WHERE CONTAINS("http://www.incgamers.com/2013/12/doom-20th-anniversary-today-true-classic") 
AND strpos(message,'http://www.incgamers.com/2013/12/doom-20th-anniversary-today-true-classic') >=0 

इसी तरह, एक पोस्ट तीनों लिंक आप fql आगे विस्तार कर सकते हैं युक्त लिए खोज करने के।

SELECT message FROM stream WHERE CONTAINS("http://www.incgamers.com/2013/12/doom-20th-anniversary-today-true-classic") 
AND strpos(message,'http://www.incgamers.com/2013/12/doom-20th-anniversary-today-true-classic') >=0 
AND CONTAINS("http://kotaku.com/5917693/ten-years-of-civ-ii-lock-the-world-in-perpetual-war") 
AND strpos(message,'http://kotaku.com/5917693/ten-years-of-civ-ii-lock-the-world-in-perpetual-war') >=0 
AND CONTAINS("http://www.youtube.com/watch?v=1TBxdXm3DP0") 
AND strpos(message,'http://www.youtube.com/watch?v=1TBxdXm3DP0') >=0 
+0

का जवाब देने के लिए धन्यवाद फेसबुक विकलांग सार्वजनिक पद खोज के बाद से ही संभव है। क्या आपने ग्राफ एपीआई एक्सप्लोरर टूल के साथ इस क्वेरी का परीक्षण किया था? इसे अपनी दीवार से पोस्ट के साथ काम करना चाहिए, मैंने अपनी गोपनीयता को सार्वजनिक रूप से सेट कर दिया है। मुझे कोई परिणाम नहीं मिल सकता है इससे कोई फर्क नहीं पड़ता कि मैं किस लिंक संयोजन में प्रवेश करता हूं। मुझे लगता है कि हम कुछ खो रहे हैं ... – Xardas

+0

आप सही हैं। व्यवहार अजीब है! मैंने ग्राफ़ एक्सप्लोरर का उपयोग करके पहली क्वेरी का परीक्षण किया और यह ठीक काम कर रहा है। हालांकि, यह एकाधिक यूआरएल के लिए कोई परिणाम नहीं दिखा रहा है। –

+0

मैंने स्ट्रीम से स्ट्रीम संदेश ("http://vimeo.com") और स्ट्रॉप्स (संदेश, 'http: //vimeo.com')> = 0 और कंटेनर ("http: // www .youtube.com ") और स्ट्रॉप्स (संदेश, 'http: //www.youtube.com')> = 0' और यह कुछ परिणाम लौटा। –

1

यह अब मध्य दिसंबर 2013 में

+0

विकिपीडिया कहता है, उद्धरण आवश्यक है। फेसबुक के आधिकारिक दस्तावेज पर पोस्ट का एक लिंक वास्तव में "अपना अंक बेचने" में मदद करेगा :) – javatarz

संबंधित मुद्दे