Saturday, 2 June 2012

Introduction to Twitter Search API

ก่อนที่เราจะใช้งาน Search บน Twitter Platform นั้น เราควรจะเข้าใจข้อจำกัดบางอย่างของ Platform กันก่อน ดังต่อไปนี้
  • ข้อมูลที่ทาง Twitter ได้ทำ index ไว้สำหรับ Search API นั้น ไม่ใช่ index ของ Tweets ทั้งหมด แต่เป็น index ของ Tweets ล่าสุดในระยะเวลา 6-9 วัน เท่านั้น
  • เราไม่สามารถใช้ Search API เพื่อค้นหา Tweets ที่เก่าเกิน 1 อาทิตย์
  • Search API อาจไม่ทำงาน ถ้าหาก Query ที่ใช้ มีความซับซ้อนเกินไป 
  • Search API ไม่รองรับ near แต่เราสามารถใช้ geocode parameter แทนได้
 Rate Limits

Rate Limits ของ Search API ไม่ได้จำกัดอยู่ในจำนวนการใช้งานต่อชั่วโมง แต่จำกัดโดยความซับซ้อนของ Query และความถี่ในการ Request เป็นหลัก เนื่องจาก Request ของการ Search จะเป็นแบบ Anonymous ทั้งหมด ดังนั้น Rate Limit จะจำกัดโดยนับ Rate Limit จาก IP Address ของเครื่องที่ Request แทน ถ้าหากเราใช้งานเกิน Rate Limit  ที่จำกัดไว้ Search API จะคืนค่า HTTP 420 Error. {"error":"You have been rate limited. Enhance your calm."}.

Best Practices
  • ควรแน่ใจว่า Parameters ทั้งหมด ได้ผ่านการ URL Encoded
  • เวลาที่ค้นหา Tweets ควรที่จะส่ง since_id  มาด้วย ค่าของ since_id ควรเป็นค่าของ Tweets สุดท้ายที่ได้รับจากการ Search ครั้งก่อนหน้า
  • ในการ Search แต่ละครั้ง ควรส่งค่า User Agent ที่สามารถระบุได้ว่ามาจาก Application ของเรา ทั้งนี้เพื่อที่ Twitter Support Team จะสามารถให้ความช่วยเหลือในกรณีที่เรามีปัญหา
  • ควรจำกัดการค้นหาไม่ให้เกิน 10 Keywords
การสร้าง Search Query 

ถ้าหากว่าไม่รู้ว่าจะสร้าง Query ยังไง ให้ลองทำตามวิธีดังต่อไปนี้
  1. ลองค้นหาผ่าน search บน Website ของ Twitter ซึ่งอยู่ที่ http://twitter.com/search
  2. จากนั้นเราจะเห็นรูปแบบของ URL ให้ลอง Copy URL มา ยกตัวอย่าง
    https://twitter.com/#!/search/%40twitterapi
  3. เปลี่ยน https://twitter.com/#!/search/ เป็น
    http://search.twitter.com/search.json?q=
    ยกตัวอย่างเช่น
    http://search.twitter.com/search.json?q=%40twitterapi
หมายเหตุ: ผลลัพธ์ที่ได้จากการ Search ผ่าน Website ของ twitter.com อาจจะไม่เหมือนกับผลลัพธ์ที่ได้จาก Search API

Search Operators


นอกเหนือจาก Search Parameters ต่างๆแล้ว เรายังสามารถใช้ Search Operators ช่วยในการปรับพฤติกรรมการ Search ได้ ยกตัวอย่างเช่น

twitter search
หมายความว่า ให้ค้นหา tweets ที่ปรากฎคำว่า "twitter" และคำว่า "search"

"happy hour" หมายความว่า ให้ค้นหา tweets ที่ตรงกับคำว่า "happy hour"

love OR hate 
หมายความว่า ให้ค้นหา tweets ที่มีคำว่า "love" หรือ "hate" หรือมีทั้งคู่

beer-root  
หมายความว่า ให้ค้นหา tweets ที่มีคำว่า "beer" แต่ไม่มีคำว่า "root"

#haiku 
หมายความว่า ให้ค้นหา tweets ที่มี hashtag "haiku"

from:twitterapi
หมายความว่า ให้ค้นหา tweets ที่ส่งมาจาก user @twitterapi

to:twitterapi 
หมายความว่า ให้ค้นหา tweets ที่ส่งถึง user @twitterapi

place:opentable:2 
หมายความว่า ให้ค้นหา tweets เกี่ยวกับสถานที่ ที่มี OpenTable ID = 2

place:247f43d441defc03 
หมายความว่า ให้ค้นหา tweets เกี่ยวกับสถานที่ ที่มี Twitter ID = 247f43d441defc03

@twitterapi  
หมายความว่า ให้ค้นหา tweets ที่ mention ถึง @twitterapi

superhero since:2011-05-09  
หมายความว่า ให้ค้นหา tweets  ที่มีคำว่า "superhero" และถูกส่งตั้งแต่วันที่ "2011-05-09" (year-month-day)

twitterapi until:2011-05-09 
หมายความว่า ให้ค้นหา tweets ที่มีคำว่า "twitterapi" และถูกส่งก่อนวันที่ "2011-05-09" (year-month-day)

movie -scary :)
หมายความว่า ให้ค้นหา tweets ที่มีคำว่า "movie" แต่ไม่มีคำว่า "scary" และเป็น tweets แบบ positive attitude

flight :(
หมายความว่า ให้ค้นหา tweets ที่มีคำว่า "flight" และเป็น tweets แบบ negative attitude

traffic ?
หมายความว่า ให้ค้นหา tweets ที่มีคำว่า "traffic. และมีการถามคำถาม

hilarious filter:links
หมายความว่า ให้ค้นหา tweets ที่มีคำว่า "hilarious" และมี URL อยู่ในนั้นด้วย

news source:tweet_button
หมายความว่า ให้ค้นหา tweets ที่มีคำว่า news และป้อนข้อมูลผ่านทาง Tweet Button

Notes about Search Operators


since และ until
  • ไม่รองรับ negation operator (-)
  • รูปแบบที่ใช้ควรเป็น yyyy-mm-dd
  • ไม่อนุญาติให้ใช้วันที่ที่ยังมาไม่ถึง (วันที่ในอนาคต)
source
  • ต้องใช้ร่วมกับ keyword parameter เท่านั้น
  • รองรับ multi-word source โดยใช้ _ (underscore) เป็นตัวแบ่ง ไม่ใช่ space ยกตัวอย่างเช่น source "Tweet Button" เวลาสร้าง search query ควรจะเปลี่ยนเป็น source: tweet_button
place
  • รองรับ data set aliases จำนวนมาก ซึ่งสามารถเข้าไปดู complete list ได้ ที่นี่ 

ตัวอย่างของ Search Query
 
Tweets which contain @twitterapi and @anywhere


http://search.twitter.com/search.json?q=%40twitterapi%20%40anywhere



Tweets which contain @twitterapi
 not via


http://search.twitter.com/search.json?q=%40twitterapi%20-via



Tweets about Twitter HQ (place ID 247f43d441defc03)


http://search.twitter.com/search?q=place%3A247f43d441defc03



Tweets to @twitter created before the 12th Dec 2012 and within 25 miles of Twitter HQ in San Francisco

http://twitter.com/search?q=to%3Atwitter%20until%3A2012-12-12&geocode=37.781157,-122.398720,25mi



แหล่งที่มา: https://dev.twitter.com/docs/using-search

No comments:

Post a Comment