บทที่ 5 ทำความรู้จักกับ Google Web API

การแนะนำ Google Web API และการลงทะเบียนเพื่อขอ API Code กับ Google
ทำไมจึงต้องเป็น API
เมื่อ แรกเริ่มที่ Search Engine ต่างๆทยอยเกิดขึ้นนั้น จะค่อนข้างเปิดกว้างสำหรับการนำทรัพยากรต่างๆใน Search Engine นั้นๆมาใช้ประโยชน์ค่อนข้างมาก เว็บไซต์อย่าง Excite และ AltaVista นั้นแทบจะไม่สนใจกับบุคคลบางกลุ่มที่ใช้ภาษา Perl เป็นเครื่องมือในการดึงข้อมูลบางส่วนไปใช้ประโยชน์ในงานของตัวเองเลย หรืออาจจะเป็น Meta Search Engine (Search Engine ที่ไม่ได้สร้างฐานข้อมูลของตนเอง แต่จะค้นหาข้อมูลจากจากฐานข้อมูลของ Search Engine ตัวอื่นอีกทีหนึ่ง) ซึ่งรวมเอาผลลัพธ์จากการค้นหาภายในฐานข้อมูลของหลายๆที่เข้าเป็นฐานข้อมูล ของตัวเองอีกทีหนึ่ง ซึ่งแน่นอนที่สุดที่บางส่วนอาจถูกปิดกั้นไม่ให้กระทำเช่นนั้นได้ แต่โดยทั่วไปแล้ว Search Engine เหล่านั้นก็ไม่ได้กังวลหรือหวงแหนอะไรมากนัก สำหรับการแบ่งปันข้อมูลที่ไม่ได้สลักสำคัญอะไร
แต่ สำหรับ Google แล้วกลับไม่ได้คิดเช่นนั้น ตรงกันข้าม Google พยายามป้องกันเหล่า Meta Search Engine ทั้งหลายที่ใช้เนื้อหา (content) ของตัวเองโดยปราศจากใบอนุญาต (License) รวมทั้งพยายามอย่างเต็มที่ที่จะบล็อก Web Agent ที่ไม่รู้จัก อย่างเช่นโมดูล LWP::Simple ของ Perl หรือแม้แต่ wget ที่ทำงานแบบ command line และยิ่งไปกว่านั้น Google จะทำการบล็อก IP address ที่ได้ทำการรันคำสั่งค้นหา (query) ข้อมูลใน Google โดยอัตโนมัติด้วย
Google มองว่าตัวเองมีสิทธิ์เต็มที่ในการกระทำเช่นนั้น ทั้งนี้เนื่องจากไม่ว่าจะเป็นเทคโนโลยีในการค้นหา (Search Technology) ฐาน ข้อมูล (Database) และเครื่องคอมพิวเตอร์ที่สร้างสิ่งเหล่านี้ขึ้นมา ก็ล้วนแต่เป็นของ Google เองทั้งสิ้น แม้กระนั้นก็ตาม Google เองก็ตระหนักเช่นกันว่า นโยบายนี้เป็นการปิดโอกาสในการที่เราๆท่านๆทั้งหลายจะสามารถใช้ประโยชน์จาก ฐานข้อมูลอันกว้างใหญ่ไพศาลของ Google ได้อย่างอัตโนมัติ
แต่แล้วในฤดูใบไม้ผลิปี 2002 ทุกสิ่งทุกอย่างก็ได้เปลี่ยนไป โดยที่ Google ได้ให้กำเนิด Google Web API (http://api.google.com/) เป็นครั้งแรก ซึ่งแม้เราจะไม่สามารถค้นหาทุกสิ่งทุกอย่างผ่าน Google Web API นี้ได้ (เช่นซินแท็กซ์พิเศษอย่าง Phonebook: ใน Hack #17 เป็น ต้น) แต่ก็เปิดโอกาสให้นักพัฒนาโปรแกรมสามารถเข้าถึงฐานข้อมูลขนาดมหึมา ทำให้สามารถสร้างอินเทอร์เฟสของพวกเขาเองเพื่อใช้ผลลัพธ์ของการค้นหา (search result) จาก Google ได้ตามแบบที่เขาต้องการ
  • Tip : API ย่อมาจาก “Application Programming Interface” ซึ่งถือเป็นเสมือนประตูสำหรับการพัฒนาโปรแกรมเพื่อเข้าใช้ทรัพยากรบางอย่าง หรือแอพพลิเคชันบางตัว ซึ่งในกรณีนี้ ทรัพยากรดังกล่าวก็คือ Google Index หรือฐานข้อมูลที่ Google ได้จัดทำอินเด็กซ์เอาไว้นั่นเอง
มาถึงตรงจุดนี้บางท่านคงจะสนใจที่จะเข้ามีส่วนร่วมในการใช้งาน Google Web API กันบ้างแล้วสินะ
ถ้า เป็นเช่นนั้น ก่อนอื่นคุณต้องลงทะเบียนเพื่อรับ Developer Key กันเสียก่อน เพื่อให้สามารถใช้งาน Google Web API ได้ ซึ่งคีย์ที่คุณได้รับมานั้น Google จะอนุญาตให้ใช้คีย์ดังกล่าวเข้าติดต่อเพื่อค้นหาข้อมูลได้วันละไม่เกิน 1,000 ครั้ง และถึงแม้คุณไม่ได้คิดจะสร้างแอพพลิเคชันใดๆเลยก็ตาม คุณก็ยังสามารถใช้ประโยชน์จาก Developer Key นี้ได้อีกประการหนึ่ง เนื่องจากมีพวก Third-Party Application (แอพพลิเคชันที่บริษัทอื่นๆ ที่ไม่ใช่ Google พัฒนาขึ้นมา) จำนวนมากที่สร้างขึ้นมา และคุณก็สามารถนำมาใช้งานได้เลย โดยที่แอพพลิเคชันเหล่านั้นก็ จำเป็นต้องใช้ Developer Key ในการติดต่อกับ Google ด้วยเหมือนกัน
การลงทะเบียน (Sign Up) กับ Google
การลงทะเบียนเพื่อที่จะได้รับ Developer Key สำหรับ Google Web API นั้นค่อนข้างง่ายมาก ขั้นตอนแรกคุณต้องเปิดบัญชีกับ Google เสียก่อน จากนั้นก็จะได้ Google Web API และคำตอบรับจาก Google ส่งกลับคืนมา สำหรับการลงทะเบียนก็เพียงแค่กรอก E-mail Address และ Password ที่ถูกต้องเท่านั้น คุณก็จะสามารถ Login เข้าไปหารายละเอียดเพิ่มเติมและสามารถใช้งานแอพพลิเคชันของ Google ได้ด้วยตนเอง
แน่นอนที่สุด คุณต้องเห็นด้วยและยอมรับ Terms & Conditions ต่างๆที่ Google ประกาศเอาไว้ด้วย (http://www.google.com/apis/download.html) ก่อนที่คุณจะสามารถดำเนินการอย่างหนึ่งอย่างใดได้ต่อไป โดยคำประกาศดังกล่าว พอจะสรุปคร่าวๆได้ดังนี้
  • Google อาจจะไม่สามารถควบคุมเนื้อหาที่ปรากฏใน Google Index ได้ทั้งหมด ดังนั้นการใช้งาน Google Web API อาจจะให้ผลลัพธ์ที่เป็นข้อความที่ไม่พึงประสงค์ก็ย่อมได้
  • การ ใช้งาน Google Web API สามารถใช้ได้กับเฉพาะงานส่วนบุคคลเท่านั้น ไม่สามารถใช้งานในลักษณะก่อให้เกิดประโยชน์ในเชิงการค้าได้ ไม่ว่าจะเป็นการนำไปขาย ให้บริการ หรือการโฆษณาก็ตาม
  • Google ไม่รับผิดชอบต่อความเสียหายอันเนื่องมาจากการใช้งาน และจริงๆแล้ว Google Web API ก็ยังเป็น Beta Version อยู่ด้วย
  • คุณ อาจจะระบุว่าโปรแกรมที่คุณพัฒนาขึ้นมีการใช้ Google Web API แต่โปรแกรมนั้นจะต้องไม่ “(1) ทำให้เสื่อมเสีย ล่วงละเมิด หรือทำให้เสียหายซึ่งเครื่องหมายการค้าของ Google (2) ผิดกฎหมายโดยชัดแจ้ง (3) ละเมิดสิทธิ์อย่างหนึ่งอย่างใดในโปรแกรมของบุคคลที่สาม” และสำหรับการใช้เครื่องหมายการค้า (Trademark) หรือสัญลักษณ์ (Logo) ของ Google จะต้องได้รับการอนุญาตเป็นลายลักษณ์อักษรเท่านั้น
Google Web API Developer’s Kit (ชุดพัฒนาแอพพลิเคชั่นสำหรับ Google)
ถ้า หากคุณสนใจที่จะเขียนโปรแกรม คุณสามารถดาวน์โหลด Google Web API Developer’s Kit ได้ที่ http://www.google.com/apis/download.html เช่นกัน ซึ่งในชุดจะประกอบด้วย
(หมายเหตุ : Link อาจมีการเปลี่ยนแปลง)
  • ไฟล์ WSDL ในหลากหลายแพล็ตฟอร์ม
  • Java Wrapper Library ซึ่งรวบรวมวิธีเชื่อมต่อกับ SOAP เอาไว้
  • ตัวอย่างของแอพพลิเคชันที่สร้างด้วยเทคโนโลยี .NET ของไมโครซอฟต์
  • เอกสารประกอบ (documentation) ซึ่งรวมทั้ง JavaDoc และ SOAP XML
เพียง แค่คลิกลิงก์ download จากนั้น unzip ไฟล์ที่ได้มา อ่านไฟล์ readme.txt แล้วทำตามคำแนะนำในไฟล์เท่านั้น คุณก็สามารถพัฒนาแอพพลิเคชันของตนเองได้แล้ว
การใช้คีย์ในการแฮ็ก
ทุกๆ ครั้งที่คุณส่ง request ไปยังเซิร์ฟเวอร์ของ Google คุณจะต้องใส่คีย์ของคุณไปพร้อมกันด้วย ซึ่ง Google จะทำการเช็คคีย์ว่าถูกต้องหรือเปล่า รวมทั้งตรวจสอบด้วยว่ามีการส่งคำสั่งค้นหา (query) เกินกว่า 1000 ครั้งในวันนั้นแล้วหรือไม่ หากทุกอย่างถูกต้องไม่มีปัญหา Google จึงจะทำการประมวลผล request ของคุณ และทำการส่งค่ากลับมาให้
โปรแกรม ทั้งหมดในหนังสือเล่มนี้ ไม่ว่าจะใช้ภาษาอะไรหรือแพล็ตฟอร์มใดก็ตาม จะมีจุดสำหรับแทรกคีย์ของคุณลงไปในโปรแกรมนั้นๆเสมอ ซึ่งโดยปกติแล้วคีย์ดังกล่าวนั้นจะเป็นแถวของอักขระ (string) ที่เกิดจากการสุ่มขึ้นมานั่นเอง
สำหรับภาษา Perl แล้วมักจะอยู่ในรูปแบบดังนี้
...
# Your Google API developer's key
my $google_key='insert key here';
...
ส่วน Java GoogleAPIDemo ที่มาพร้อมกันกับ Google Web APIs Developer’s Kit จะมีรูปแบบดังนี้
% java -cp googleapi.jar com.google.soap.search.GoogleAPIDemo
insert_key_here search ostrich
จะ เห็นว่าในทั้งสองกรณี จะมีคำว่า insert key here หรือ insert_key_here (มีขีดล่าง) ซึ่งจะถูกแทนที่ด้วยคีย์ของคุณ ตัวอย่างเช่น ผู้เขียนแทรกคีย์เข้าไปใน Perl Script ในลักษณะนี้
...
# Your Google API developer's key
my $google_key='12BuCK13mY5h0E/34KN0cK@ttH3Do0R';
...
WSDL คืออะไร?
คำว่า WSDL นี้อ่านว่า “whiz-dill” ซึ่ง ย่อมาจาก Web Service Description Language ซึ่งเป็น XML รูปแบบหนึ่งในการอธิบาย Web Service ซึ่งส่วนที่สำคัญและมีประโยชน์ที่สุดเป็นส่วนหนึ่งของ Google Web APIs Developer’s Kit นั้นก็คือ GoogleSearch.wsdl ซึ่งเป็นไฟล์ WSDL ที่จะอธิบายเซอร์วิสรวมทั้งชื่อเมธอดและอาร์กิวเมนต์ต่างๆที่จะสามารถนำมา ใช้งานได้
โดย ปกติแล้ว การเก็บไฟล์ GoogleSearch.wsdl เอาไว้ในไดเร็กทอรีเดียวกันกับสคริปต์ที่คุณเขียนจะเป็นวิธีที่ง่ายที่สุด อย่างไรก็ตาม ถ้าหากคุณต้องการที่จะเก็บไฟล์นี้เอาไว้ในไดเร็กทอรีอื่น อย่าลืมเปลี่ยนตำแหน่งของไฟล์ (path) ให้ถูกต้องด้วยก็แล้วกัน ซึ่งโดยปกติแล้วมักจะระบุตำแหน่งของไฟล์ WSDL ดังนี้
...
# Location of the GoogleSearch WSDL file
my $google_wdsl = "./GoogleSearch.wsdl";
...
สำหรับผู้เขียนเก็บไฟล์ดังกล่าวเอาไว้ในไดเรกทอรี library ดังนั้นจึงเปลี่ยนพาธจากเดิมที่เหมือนข้างบน มาเป็นข้างล่างนี้
...
# Location of the GoogleSearch WSDL file
my $google_wdsl = "/home/me/lib/GoogleSearch.wsdl";
...
ทำความเข้าใจกับ Google API Query
หัวใจ หลักของ Google application ก็คือ “การค้นหา” (query) ซึ่งถ้าปราศจากการค้นหาแล้ว ก็ย่อมไม่มีข้อมูลกลับคืนมาอย่างแน่นอน และเนื่องจากเป็นสิ่งสำคัญ เราจึงน่าจะมาทำความเข้าใจโครงสร้างของการส่งคำสั่งค้นหากันสักหน่อย
รูปแบบการค้นหา (query essential)
สำหรับ Google Web API ที่ใช้ภาษา Perl ซึ่งจะส่งคำสั่งค้นหาไปยัง Google จะมีลักษณะดังนี้
my $results = $google_search ->
doGoogleSearch(
key, query, start, maxResults,
filter, restrict, safeSearch, lr,
ie, oe
);
รายการที่อยู่ในวงเล็บจะเป็นตัวแปร ตัวเลข หรือค่าตรรกะอย่างใดอย่างหนึ่ง สำหรับตัวอย่างข้างบนนี้ เป็นชื่อของอาร์กิวเมนต์ (Name of Argument) ชนิดต่างๆซึ่งอธิบายได้ดังนี้
key
เป็นจุดที่คุณต้องแทรกคีย์ของ Google API เข้าไป ซึ่งถ้าหากปราศจากคีย์แล้ว การส่งคำสั่งค้นหาจะไม่ทำงาน
query
ส่วนนี้เป็นคำค้นหา (query word) ของคุณ ซึ่งประกอบด้วยคีย์เวิร์ด วลี และซินแท็กซ์ต่างๆ
start
เป็น การกำหนดจุดเริ่มต้นของรายการผลลัพธ์ที่จะแสดงว่า ต้องการให้แสดงผลลัพธ์ตั้งแต่รายการที่เท่าไหร่เป็นต้นไป เช่นถ้ากำหนดเอาไว้ที่ 16 สำหรับการค้นหาผลลัพธ์ 10 รายการ Google Web API จะส่งผลลัพธ์รายการที่ 16-25 มาให้ แต่ถ้ากำหนดเอาไว้ที่ 300 รายการ ก็จะได้ผลลัพธ์ตั้งแต่รายการที่ 300-309 กลับมา เป็นต้น (ทั้งนี้ผลลัพธ์ที่ได้จากการค้นหาทั้งหมดจะต้องมากพอสำหรับตัวเลขนั้นๆด้วย) การนับจะเริ่มนับที่เลข 0 (zero-based index) ไม่ใช่เลข 1 ดังนั้นผลลัพธ์รายการแรกก็คือผลลัพธ์หมายเลข 0 นั่นเอง ซึ่งจริงอยู่ที่มันอาจจะดูแปลกสักหน่อย แต่มันก็สามารถใช้งานได้สะดวกดี ข้อสังเกตก็คือ ค่าที่สามารถใช้ได้จะอยู่ระหว่าง 0-999 เนื่องจาก Google จะส่งผลลัพธ์กลับคืนมาได้ไม่เกิน 1,000 รายการต่อการค้นหาหนึ่งครั้งนั่นเอง
maxResults
เป็นตัวเลขที่ระบุจำนวนรายการผลลัพธ์ของการค้นหาที่คุณประสงค์จะให้ Google Web API คืนค่าให้คุณ ซึ่งจะมีค่าอยู่ระหว่าง 1 ถึง 10
filter
คุณ อาจนึกถึง filter ที่เป็นออปชันซึ่งมีให้เลือกในโปรแกรมที่สามารถกรองข้อมูลไม่ให้เด็กดู แต่จริงๆแล้วค่า true หรือ false ในส่วนนี้จะเป็นการกรองข้อมูลที่ได้จากการค้นหา ให้ผลของการค้นหาที่มีหัวข้อซ้ำกันถูกตัดออกไป โดยเฉพาะอย่างยิ่งที่มาจากโฮสต์ตัวเดียวกัน ซึ่งการ enable ในส่วนของ filter นี้ จะทำให้มีเพียงผลลัพธ์ของการค้นหาเพียงสองรายการแรกในหนึ่งโฮสต์เท่านั้น ที่จะแสดงออกมาในรายการผลลัพธ์ของการค้นหาทั้งหมด
restrict
ในส่วนนี้จะเป็นการจำกัดผลลัพธ์ของการค้นหาของคุณ ให้ตรงกับความต้องการมากยิ่งขึ้น หรืออาจจะเป็นการระบุประเทศที่เป็นแหล่งที่มาของผลลัพธ์ก็ได้ ซึ่ง Google มีการจำกัดในส่วนนี้แบ่งได้เป็น 4 หัวข้อ (Topic) ด้วยกัน คือ US. Government (unclesam), Linux (linux), Macintosh (mac) และ FreeBSD (bsd) ซึ่งสำหรับการจำกัดผลลัพธ์ที่เป็นประเทศนั้น จะมีรายชื่อประเทศพร้อมชื่อย่อใน Google Web API Documentation อยู่แล้ว คุณสามารถนำมาใช้ได้เลย สำหรับการค้นหาที่ไม่ต้องการจำกัดผลลัพธ์ด้วยวิธีนี้ สามารถทำได้โดยเพียงใส่เครื่องหมาย “” ลงไปเท่านั้น

safeSearch
ตรง ส่วนนี้จะเป็นการกรองเนื้อหาที่ได้รับ มีค่าให้เลือกใส่เป็นค่าบูลีน true หรือ false ซึ่งจะเป็นการระบุให้ผลลัพธ์ มีการกรองข้อมูลที่ไม่เหมาะสม หรือข้อมูลที่มีเนื้อหาไม่เหมาะสม (questionable content) ออกไป
lr
lr ย่อมาจาก “Language Restrict” ซึ่ง Google มีลิสต์รายการภาษาต่างๆใน Google Web API Documentation อยู่แล้ว คุณสามารถใช้ภาษาเป็นเครื่องมือในการจำกัดผลลัพธ์ได้ หรือถ้าไม่ต้องการทำเช่นนั้น ก็ปล่อยอาร์กิวเมนต์นี้ให้เว้นว่างไว้
ใน การจำกัดผลลัพธ์ในการแสดงเป็นภาษาต่างๆนั้น สามารถทำได้หลายวิธี เช่น คุณสามารถใส่รหัสของภาษา (language code) นั้นๆลงไป เช่น สมมุติคุณต้องการจำกัดผลลัพธ์ให้เป็นเฉพาะภาษาอังกฤษเท่านั้น คุณ ก็เพียงใส่ lang_en ลงไป นอกจากนี้คุณสามารถจำกัดผลลัพธ์ได้มากกว่าหนึ่งภาษา โดยการคั่นรหัสของภาษาที่ต้องการด้วยเครื่องหมาย | (pipe) ตัวอย่างเช่น lang_en|lang_de ซึ่งจะเป็นการจำกัดผลลัพธ์เป็นภาษาอังกฤษหรือเยอรมันเท่านั้น
เพื่อ ไม่ให้ผลลัพธ์มีข้อความที่คุณไม่เข้าใจ คุณสามารถกำหนดไม่ให้ภาษาอื่นใดที่ไม่ต้องการ หรือไม่เกี่ยวข้องกับสิ่งที่ต้องการค้นหา ปรากฏในผลลัพธ์ได้ด้วย โดยการใส่เครื่องหมาย – (ลบ) นำหน้ารหัสของภาษานั้นๆ เช่น –lang_de จะแสดงผลลัพธ์ของการค้นหาได้ทุกภาษานอกจากภาษาเยอรมันเท่านั้น
ie
อาร์กิ วเมนต์ ie ย่อมาจาก “Input Encoding” ซึ่งจะทำให้คุณสามารถระบุ Character Encoding ที่ใช้ในการส่งคำสั่งค้นหาได้ ในเอกสารประกอบ (Documentation) ของ Google แนะนำเอาไว้ว่า “เครื่องที่ติดต่อเข้ามา ควรจะส่ง request มาในรูปแบบ UTF-8 และคาดหวังว่าจะได้รับผลการค้นหาในรูปแบบ UTF-8 กลับไปด้วย” เนื่องจากปัจจุบันนี้ทุกอย่างเป็น UTF-8 ไปเกือบหมดแล้ว และในแง่ปฏิบัติจริงๆแล้ว request ใดที่ไม่ได้ใช้ UTF-8 จะไม่ถูกรับเข้ามาประมวลผลไปโดยปริยายเลยทีเดียว
oe
อาร์กิวเมนต์ตัวนี้ย่อมาจาก “Output Encoding” ซึ่งก็เหมือนกันกับ Input Encoding คือทุกสิ่งทุกอย่างเป็น UTF-8 ไปหมดแล้ว
ตัวอย่าง
คราว นี้เราลองมาดูตัวอย่างกัน สมมุติให้เป็นการส่งคำสั่งค้นหา ที่มีการใช้ตัวแปรแทน key และ query และระบุผลลัพธ์ของการค้นหาที่ต้องการจำนวน 10 รายการ โดยเริ่มต้นจากรายการหมายเลขที่ 100 และมีการกำหนดให้ filter และ safeSearch ทำงาน ซึ่งการค้นหาด้วย Perl จะมีลักษณะดังนี้
my $results = $google_search ->
doGoogleSearch(
$google_key, $query, 100, 10,
"true", "", "true", "",
"utf8", "utf8"
);
โปรดสังเกตว่า key และ query ซึ่งแทนด้วยตัวแปรจะมีเครื่องหมาย “” ครอบอยู่ด้วย
my $results = $google_search ->
doGoogleSearch(
"12BuCK13mY5h0E/34KN0cK@ttH3Do0R", "+paloentology +dentistry" , 100, 10,
"true", "", "true", "",
"utf8", "utf8"
);
การจำกัดผลลัพธ์ของการค้นหา
บาง ครั้งคุณอาจต้องการจำกัดผลลัพธ์ให้ออกมาเป็นภาษาใดภาษาหนึ่ง และจากประเทศใดประเทศหนึ่งโดยเฉพาะ หรืออาจเป็นภาษา ประเทศและหัวข้อใดหัวข้อหนึ่งโดยเฉพาะ นี่เป็นคำแนะนำหลักทั่วไปเล็กน้อย เกี่ยวกับการจำกัดผลลัพธ์บางประการ
  • จำกัดไม่ให้มีคำบางคำในผลลัพธ์การค้นหา โดยการใช้เครื่องหมาย - (ลบ) หน้าคำนั้นๆ
  • แยกประเภทอาร์กิวเมนต์แต่ละประเภทด้วยเครื่องหมาย . (จุด) โดยไม่มีช่องว่างระหว่างคำ เช่น “linux.contryCA” เป็นต้น
  • ระบุ ความสัมพันธ์แบบ OR ระหว่างค่าของอาร์กิวเมนต์ 2 ค่าที่เป็นประเภทเดียวกันด้วยเครื่องหมาย | (pipe) เช่น contryCA|contryFR เป็นการเลือกผลลัพธ์ที่มาจากประเทศแคนาดาหรือฝรั่งเศสก็ได้
  • ครอบค่าของอาร์กิวเมนต์ที่เป็นประเภทเดียวกันด้วยเครื่องหมายวงเล็บ
สมมุติ คุณต้องการค้นหาผลลัพธ์เป็นภาษาฝรั่งเศส แต่เป็นผลลัพธ์ที่มาจากเว็บไซต์ในประเทศแคนาดาเท่านั้น รวมทั้งสนใจเฉพาะหัวข้อที่เกี่ยวกับลีนุกซ์อย่างเดียว การค้นหาของคุณจะมีคำสั่งค้นหา ดังนี้
my $results = $google_search ->
doGoogleSearch(
$google_key, $query, 100, 10,
"true", "linux.countryCA", "true", "lang_fr",
"utf8", "utf8"
);
สำหรับการค้นหาผลลัพธ์จากประเทศแคนาดา หรือจากประเทศฝรั่งเศส จะใช้ดังนี้
“.linux.(countryCA|countryFR)”
หรือ ถ้าหากต้องการผลลัพธ์เป็นภาษาฝรั่งเศสเหมือนเดิม แต่ต้องการให้มาจากเว็บไซต์จากประเทศต่างๆทั่วโลก ยกเว้นแต่เฉพาะประเทศฝรั่งเศสเท่านั้น จะต้องใช้ดังนี้
“.linux.(-countryFR)”

การใส่อาร์กิวเมนต์อื่นๆ
คุณสามารถใช้อาร์กิวเมนต์ตัวอื่นๆได้ดังนี้
การใช้ SafeSearch
ถ้า หากคุณกำลังพัฒนาโปรแกรมสำหรับให้ทุกเพศทุกวัยสามารถใช้ได้ คุณอาจจำเป็นต้องใช้ Safesearch ซึ่งคุณสามารถเข้าไปดูรายละเอียดได้ใน Hack #81 โดยทั่วไปแล้ว คุณสามารถพัฒนาโปรแกรมที่สามารถอ่านข้อความต่างๆในเว็บฟอร์ม เพื่อนำข้อความหรือคำที่อยู่ในนั้นมาตรวจสอบ ว่ามีความเหมาะสมหรือล่อแหลมเพียงใด เพื่อพิจารณาว่าสมควรกรองข้อความหรือคำนั้นออกไปหรือไม่
การตั้งค่าจำนวนผลลัพธ์
ไม่ ว่าคุณจะตั้งค่าจำนวนผลลัพธ์เอาไว้ 1 หรือ 10 รายการก็ตาม โปรดทราบว่าคุณได้ใช้สิทธิ์ในการส่งค่าไปยัง Google ที่กำหนดเอาไว้ไม่เกิน 1,000 ครั้ง ตามที่คีย์ของคุณทำได้ในแต่ละวันเท่านั้น คุณอาจจะเกิดคำถามขึ้นมาในใจว่า ถ้าเป็นเช่นนั้นคุณก็ตั้งค่าจำนวนผลลัพธ์ในแต่ละครั้งเอาไว้ที่ 10 รายการเลยไม่ดีกว่าหรือ ซึ่งจริงๆแล้วอาจจะไม่จำเป็นก็ได้ ถ้าหากคุณสนใจเฉพาะผลลัพธ์ที่อยู่ด้านบนสุดของรายการผลลัพธ์ของการค้นหาเท่า นั้น ทั้งนี้เนื่องจากการไม่ request ผลลัพธ์ที่คุณไม่สนใจ จะเป็นการเพิ่มความเร็วให้กับโปรแกรมของคุณได้อีกเล็กน้อยด้วย
การค้นหาแบบจำกัดหัวข้อ
ความ สามารถของ Google Web API ที่ยอมให้คุณค้นหาผลลัพธ์แบ่งเป็นหัวข้อได้ถึง 4 หัวข้อ ด้วยผลลัพธ์ที่เป็นภาษาหรือประเทศที่แตกต่างกันไปนับสิบประเทศ ดังนั้นจึงอาจเกิดผลลัพธ์ที่ต่างกันได้มากมายนับพัน ที่เราจะเลือกจำกัดให้ได้เฉพาะผลลัพธ์ของหัวข้อ ภาษา และประเทศที่เราสนใจ
ลอง พิจารณาดูถึงโปรแกรมที่จำกัดผลลัพธ์เฉพาะเรื่องที่เกี่ยวกับ Open Source เท่านั้น (เช่น linux หรือ perl) ซึ่งคุณอาจจะมีรายการคำศัพท์ที่เกี่ยวข้องกับเรื่อง Open Source เอาไว้ชุดหนึ่ง แล้วพัฒนาโปรแกรมเพื่อให้ค้นหาผลลัพธ์ โดยยึดรายการคำศัพท์ชุดนี้เป็นหลักเพื่อให้ได้ผลลัพธ์ออกมาเกี่ยวกับหัวข้อ Open Source เท่านั้นก็ได้ โดยสามารถจำกัดเฉพาะแหล่งที่มาของผลลัพธ์ว่าต้องการให้มาจากประเทศอะไรได้ เหมือนเดิม ซึ่งคุณอาจจะได้ผลลัพธ์ว่า มีการพูดถึงภาษา Perl ในหัวข้อ Linux อยู่จำนวน 15 ครั้งในประเทศฝรั่งเศส และ 20 ครั้งในประเทศเยอรมัน เป็นต้น
คุณ อาจจะพัฒนาโปรแกรมที่มีพูลดาวน์เมนู (pull-down menu) เพื่อให้ผู้ใช้สามารถเลือกจำกัดผลลัพธ์ของการค้นหา ว่าจะให้มาจากทวีปใดด้วยก็ได้ คล้ายกับจำกัดผลลัพธ์ที่มาจากประเทศใดประเทศหนึ่งๆนั่นเอง ซึ่ง ทำได้โดยการใส่ชื่อทวีปลงไปเป็นตัวแปรในการค้นหา หรือแม้กระทั่งการสร้างอินเทอร์เฟสเพื่อให้ผู้ใช้ระบุหัวข้อ (Topic) ใดหัวข้อหนึ่ง แล้วกำหนดให้แสดงผลลัพธ์ออกมา โดยเป็นผลลัพธ์ที่มาจากประเทศต่างๆที่เตรียมไว้ ประเทศหนึ่งต่อผลลัพธ์หนึ่ง หรือจะเป็นภาษาหนึ่งต่อผลลัพธ์รายการหนึ่งก็ได้
ทำความเข้าใจกับ Google Web API Response
ในขณะที่ Google Web API ยอมให้คุณเข้าถึงส่วนที่เป็นหัวใจสำคัญของ Google Index แต่พึงทราบว่ามีบางอย่างที่ทำได้ และบางอย่างก็ทำไม่ได้เหมือนกัน นั่นคือ
สิ่งที่ทำได้
สิ่งที่ Google Web API ทำได้หรือให้การสนับสนุนก็คือ ซินแท็กซ์ดังต่อไปนี้
site:
dasterange:
intitle:
inurl:
allintext:
allinlinks:
filetype:
info:
link:
related:
cache:
สิ่งที่ Google API ทำไม่ได้
ซินแท็กซ์ที่ Google Web API ไม่สนับสนุนก็คือ
phonebook:
rphonebook:
bphonebook:
stocks:
ใน ขณะที่ซินแท็กซ์เหล่านี้ไม่สามารถให้ผลลัพธ์ได้ภายใต้การทำงานของ Google Web API แต่คุณอาจจะใช้ประโยชน์จากซินแท็กซ์เหล่านี้ได้บ้าง อย่างเช่นที่ไฟล์ kincount.cgi ใน Hack #70 ได้ทำให้ดูเป็นตัวอย่าง
แสดงผลลัพธ์ได้ไม่เกิน 10 รายการ
ใน ขณะที่การค้นหาผ่านโฮมเพจ Google.com สามารถเลือกแสดงผลลัพธ์ได้ว่าต้องการให้แสดงผลลัพธ์หน้าละ 10,20,30,50 หรือ 100 รายการต่อหนึ่งหน้า แต่ Google Web API จำกัดผลลัพธ์เอาไว้ที่ 10 รายการต่อการค้นหาหนึ่งครั้ง อย่างไรก็ตาม มิได้หมายความว่าคุณไม่สามารถได้ผลลัพธ์มากกว่านี้ได้เลยถ้าต้องการจริงๆ เพราะการเพิ่มผลลัพธ์ให้มากกว่านี้ทำได้ง่ายๆเพียงแค่การใช้การวน ลูปดึงผลลัพธ์เพิ่มครั้งละ 10 รายการเท่านั้นเอง [Hack #51]
ผลลัพธ์จะแสดงอะไรบ้าง
Google Web API จะแสดงข้อมูลสรุปเกี่ยวกับรายการผลลัพธ์ทั้งหมด รวมทั้งข้อมูลในส่วนของผลลัพธ์แต่ละรายการด้วย ดังนี้
ข้อมูลสรุป ข้อมูลสรุปเกี่ยวกับรายการผลลัพธ์ทั้งหมดประกอบด้วยดังนี้

ค่า true/false ที่จะเป็นการระบุว่า ผลลัพธ์ที่ได้จากการค้นหานี้ มีการกรองเพื่อคัดแยกผลลัพธ์ที่มีเนื้อหาคล้ายคลึงกันมากๆออกไปหรือไม่ หรืออาจจะเป็นการแยกรายการผลลัพธ์จากโฮสต์ตัวเดียวกันออกไปบางรายการก็ได้

ลิสต์รายการหมวดของไดเรกทอรี (ถ้ามี) รวมทั้งคำถามที่ใช้ค้นหา
ข้อมูลในผลลัพธ์แต่ละรายการ ผลลัพธ์ แต่ละรายการจะบอกถึง URL ที่มาของข้อมูล ชื่อเรื่อง (title) รวมถึงข้อความที่ตัดตอนบางส่วนมาจากเนื้อหา (snippet) ด้วย ซึ่งแบ่งออกเป็นส่วนๆดังนี้

สรุปรายการไดเรกทอรีของ Google (ถ้ามี)

URL ที่เป็นแหล่งที่มาของผลลัพธ์ ซึ่งจะมี http:// นำหน้า


ข้อความที่ตัดตอนมาจากเนื้อหาทั้งหมด ซึ่งจะมีคำที่เราถามหรือใช้ค้นหา แสดงเป็นตัวหนา (แท็ก ในภาษา HTML)



ชื่อเรื่อง (title) ในภาษา HTML


ขนาดเป็นกิโลไบต์ (kb) ของหน้าที่ทำการแคชไว้ (ถ้ามี)
คุณ อาจจะสังเกตเห็นว่า ไม่มี PageRank แสดงในรายการผลลัพธ์แต่ละรายการ ซึ่งจริงๆแล้ว Google จะแสดง PageRank ก็เฉพาะแต่ใน Google Toolbar [Hack #24] เท่านั้น นอกจากใน Google Toolbar แล้ว ก็มีที่ Google Directory ที่จะแสดง PageRank เอาไว้ด้วย

โพสต์ยอดนิยมจากบล็อกนี้

I miss you all กับ I miss all of you ต่างกันอย่างไร

ปัญหาและเฉลยวิชาธรรม นักธรรมชั้นตรี สอบในสนามหลวง วันอังคาร ที่ ๒๙ กันยายน พ.ศ.๒๕๕๒

ปัญหาและเฉลยวิชาอนุพุทธประวัติ นักธรรมชั้นโท สอบในสนามหลวง วันอาทิตย์ ที่ ๒๐ พฤศจิกายน พ.ศ. ๒๕๔๘