Search Engine

อินเทอร์เน็ตในปัจจุบันมีข้อมูลข่าวสารอยู่มากมาย โดยเฉพาะข้อมูลไฮเปอร์เท็กซ์ที่มีให้บริการในระบบ WWW เป็นที่นิยมใช้อย่างแพร่หลาย การค้นหาข้อมูลที่มีเนื้อหาที่ตรงกับความสนใจจากเว็บเพจกว่า 100 ล้านเพจ ที่มีรวมกันอยู่ในอินเทอร์เน็ตจึงเป็นเรื่องยาก หากไม่มีเครื่องมือช่วยค้นหาหรือที่รู้จักกันดีในชื่อของ Search Engine
บทความนี้จะอธิบายถึงโครงสร้างและหลักการทำงานพื้นฐานของเสิร์ช เอ็นจิน และเทคนิคที่ช่วยให้เสิร์ชเอ็นจิน สามารถค้นหา และทำดัชนี (Index) ได้อย่างมีประสิทธิภาพ

เสิร์ชเอ็นจิน และไดเรคทอรี

บริการค้นหาเวบเพจที่มีอยู่ในปัจจุบันเช่น AltaVista, Lycos, Yahoo, HotBot, InfoSeek ฯลฯ ซึ่งเรามักเรียกโดยรวมทั้งหมดว่าเป็นเสิร์ชเอ็นจินนั้น แท้ที่จริงแล้วมีบางแห่งมีที่ทำงานด้วยโดยใช้เสิร์ชเอ็นจิน และบางแห่งทำงานด้วยวิธีเก็บเว็บเพจไว้เป็น ไดเรคทอรี ซึ่งมีความแตกต่างกันโดยหลักพื้นฐานการสร้างดัชนีชี้เวบเพจ
ไดเรคเทอรีมีการทำงานที่แตกต่างกับเสิร์ชเอ็นจิน คือใช้การปรับเพิ่มข้อมูลโดยผู้ดูแลระบบเองโดยไม่ได้ทำอย่างอัตโนมัติ หากเวบไซต์ใดที่ต้องการมีรายชื่อในไดเรคเทอรีก็ต้องติดต่อไปยังผู้ดูแลไดเรค เทอรี เพื่อให้ผู้ดูแลจำแนกและจัดเก็บลงในฐานข้อมูล ระบบการเก็บแบบไดเรคเทอรีอาจให้ผลลัพธ์การค้นหาข้อมูลที่ตรงประเด็นมากกว่า เสิร์ชเอ็นจิน เพราะผ่านการแยกหมวดหมู่เองเพื่อให้สามารถค้นหาได้โดยตรง ตัวอย่างของบริการค้นหาที่ใช้ระบบไดเรคเทอรีได้แก่ Yahoo!
สำหรับเสิร์ชเอ็นจินโดยความหมายที่แท้จริงแล้วเป็นระบบซอฟต์แวร์ ที่คอยอ่านข้อมูลแต่ละหน้าหรือเวบเพจจากเวบไซต์ต่างๆโดยอัตโนมัติ จากนั้นจึงนำเวบเพจที่อ่านได้มาทำดัชนี เสิร์ชเอ็นจินจะตรวจสอบลิงค์ในแต่ละหน้าของเวบเพจเพื่อเข้าไปอ่านเวบเพ จเพื่อทำดัชนีต่อไปอีก ตัวอย่างของเสิร์ชเอ็นจินนี้ได้แก่ Alta Vista หรือ HotBot เป็นต้น

ภายในของเสิร์ชเอ็นจิน

โครงสร้างภายในของเสิร์ชเอ็นจินสามารถแบ่งออกเป็น 3 ส่วนใหญ่ๆ ดังรูปที่ 1 คือ
เสิร์ชเอ็นจิน = สไปเดอร์ + อินเด็กเซอร์ + เสิร์ชเอ็นจินซอฟต์แวร์


รูปที่ 1 องค์ประกอบของเสิร์ชเอ็นจิน

สไปเดอร์

สไปเดอร์ หรืออาจเรียกในชื่ออื่นว่า โรบอต หรือ ครอเลอร์ (Crawler) ทำหน้าที่อ่านเวบเพจในแต่ละ เวบไซต์ แล้วตรวจสอบลิงค์เพื่อเชื่อมไปยังเวบไซต์อื่นๆ เวบเพจที่อ่านมาได้นั้นจะถูกส่งไปยังอินเด็กเซอร์ต่อไป สไปเดอร์อาจจะกลับมาอ่านเวบเพจเดิมซ้ำว่ามีการเปลี่ยนแปลงหรือไม่ตามระยะ เวลาที่กำหนดไว้
1. สร้างคิวของเวบเพจ ที่ต้องการจะทำดัชนีโดยในคิวนั้นเริ่มต้นมีอย่างน้อยที่สุดหนึ่งเวบเพจ
2. เลือกเวบเพจขึ้นมาจากคิวหนึ่งเวบเพจ
3. อ่านข้อมูลจากเวบเพจที่เลือกขึ้นมาจากขั้นที่ 2 แล้ววิเคราะห์ว่ามีลิงค์เชื่อมไปยังเวบเพจอื่นใดบ้าง จากนั้นให้เพิ่มลิงค์ของเวบเพจลงคิว
4. เก็บข้อมูลจากเวบเพจโดยจัดเก็บคำที่กำหนดด้วยคำสั่ง title หรืออื่นๆเข้าสู่ฐานข้อมูล
5. กลับไปยังขั้นที่ 2

นอกจาก สไปเดอร์ จะทำงานหาลิงค์เพิ่มโดยอัตโนมัตแล้ว เสิร์ชเอ็นจินส่วนใหญ่อนุญาตให้ส่ง URL เพื่อกำหนดให้สไปเดอร์มาทำดัชนีที่เวบไซต์ใดๆได้ ในปัจจุบันมีบริการที่จะส่ง URL ไปเสิร์ชเอ็นจิน หลายๆแห่งพร้อมกันในคราวเดียวเช่นที่ www.submit-it.com

อินเด็กเซอร์

อินเด็กเซอร์จะรับข้อมูลจากสไปเดอร์มาทำดัชนี เทคนิคการทำดัชนีมักใช้การจัดเก็บแบบแฮชชิง เพื่อที่ช่วยให้ค้นหาข้อมูลได้สามารถค้นหาได้อย่างรวดเร็ว ขั้นตอนการทำงานของอินเด็กเซอร์แบ่งออกได้เป็น 3 ขั้นตอนหลักดังรูปที่ 2 คือ
  • กรองคำด้วยฟิลเตอร์ เนื่องจากไฟล์ที่ทำดัชนีอาจไม่เป็น HTML หรือไฟล์แอสกี ดังนั้นฟิลเตอร์จะตรวจสอบไฟล์ที่ได้ว่าเป็นไฟล์ชนิดใดสามารถนำมาทำดัชนีได้ หรือไม่ ถ้าได้ก็จะส่งต่อสู่ภาคการแยกคำต่อไป เสิร์ชเอ็นจินบางตัวสามารถ ทำดัชนีไฟล์อื่นๆนอกเหนือจากไฟล์ HTML ได้ด้วยเช่น Index Server ของไมโครซอฟต์สามารถทำดัชนีคำของแฟ้มเวิร์ดหรือเอกเซลได้
  • แยกคำ ขั้นตอนนี้จะรับสายอักขระมาจากฟิลเตอร์ แล้วตัดแบ่งสายอักขระนั้นๆออกเป็นคำๆ และเพื่อตรวจสอบต่อไปว่าควรจะนำคำนั้นมาทำดัชนีหรือไม่
  • จัดทำดัชนี ขั้นตอนนี้จะทำหน้าที่ตรวจสอบคำศัพท์แต่ละคำที่ได้มาจากการแยกคำ แล้วพิจารณาว่าคำศัพท์คำนั้นสมควรที่จะนำมาทำดัชนีหรือไม่ เช่นคัดทิ้งคำบางคำที่ไม่ได้ใขฃช้ประโยชน์ในการค้นหา เช่น a, an, the, you หรือ of เป็นต้น เสิร์ชเอ็นจินบางตัวสามารถกำหนดได้ว่าจะทำดัชนี กับคำศัพท์เหล่านี้ไว้หรือไม่

รูปที่ 2 องค์ประกอบของอินเด็กเซอร์

เสิร์ชเอ็นจินซอฟต์แวร์

เป็นส่วนของโปรแกรมที่รับคำศัพท์ที่ต้องการให้ค้นหา แล้วค้นหาในดัชนี หลังจากนั้นจะนำข้อมูลที่ค้นหามาจัดลำดับตามความสำคัญก่อนหลังเพื่อแสดงกลับ ไปบนหน้าจอ โปรแกรมส่วนนี้มักเป็นโปรแกรม cgi ที่เขียนเชื่อมโยงเข้ากับเวบเพจที่รอให้ผู้ใช้ป้อนคำศัพท์

เทคนิคในเสิร์ชเอ็นจิน

ผลลัพธ์จากการค้นหาจากเสิร์ชเอ็นจินที่มีใช้งานอยู่ทั่วไปนั้น นอกจากจะได้ลิงค์ของเวบเพจแล้วเสิร์ชเอ็นจินยังแสดงเนื้อหาข้อมูลในเวบเพ จนั้นด้วย นั่นหมายความว่าเสิร์ชเอ็นจินจะต้องจัดเก็บข้อมูลที่นำมาแสดงนั้นไว้ในฐาน ข้อมูล เสิร์ชเอ็นจินแต่ละตัวมีวิธีเลือกเก็บข้อมูลแตกต่างกันไปเช่น เก็บเฉพาะอักขระ 200 ตัวแรกของเวบเพจ เสิร์ชเอ็นจินจะคัดเอาอักขระ 200 ตัวแรกที่ไม่ได้เป็นคำสั่ง HTML มาทำเป็นคำบรรยาย หรือเก็บจำนวนคำที่พบในเพจเพื่อนำมาแสดงเป็นคะแนนว่าเวบเพจที่ค้นได้มีความ เกี่ยวข้องกับคำที่ค้นมามากเพียงใด
ตัวสไปเดอร์ในเสิร์ชเอนจินจะใช้ทรัพยากรของระบบเป็นจำนวนมาก เสิร์ชเอนจินที่ดีจะมีสไปเดอร์ที่ไม่ใช้ทรัพยากรของระบบสูงมากเกินไปโดย อาศัยเทคนิคดังเช่น
  • ไม่อ่านเอกสาร HTML มากเกินไป แม้ว่าสไปเดอร์ จะมีความสามารถจัดการเอกสารได้ทัน เพราะอาจจะทำให้เครือข่ายทำงานช้าลง
  • อ่านเฉพาะส่วนที่จำเป็นต้องใช้ เช่นอาจจะอ่านมาเฉพาะส่วนที่เป็นตัวอักษร ซึ่งในโปรโตคอล HTTP มีฟิลด์ Accept ซึ่งใช้สำหรับบอกชนิดของข้อมูลที่ต้องการ หากมีการระบุชนิดของข้อมูลลงในฟิลด์นี้ เวบเซิร์ฟเวอร์จะส่งข้อมูลมาเฉพาะชนิดที่ระบุในไฟล์
  • ตรวจสอบไม่ให้อ่านเวบที่เคยอ่านไปแล้ว ข้อควรระวังของข้อนี้ก็คือ เซิร์ฟเวอร์บางเซิร์ฟเวอร์อาจจะมีชื่อได้หลายชื่อ เช่น web.nexor.co.uk, nercules.nexor.co.uk และ 128.243.219.1 เป็นเซิร์ฟเวอร์ เดียวกัน
มัลติเสิร์ชเอ็นจิน
นอกไปจากเสิร์ชเอ็นจินแล้ว ในปัจจุบันยังมีมัลติเสิร์ชเอนจิน หรือ เสิร์ชเอนจินแบบขนาน ซึ่งก็คือเสิร์ชเอนจินที่จะส่งคำไปถามหรือเสิร์ชเอนจินหลายๆตัวพร้อมกันใน ครั้งเดียว แล้วนำผลลัพธ์ที่ได้มารวมและเรียบเรียงใหม่ ตัวอย่างของมัลติเสิร์ชเอนจิน เช่น
Doqpile (http://www.doqpile.com)
Inference Find (http://m5.inference.com/find/)
Metacrawler (http://www.metacrawler.com)
SEARCH.COM (http://www.search.com)

บทสรุป

เสิร์ชเอนจินนับเป็นเครื่องมือสำคัญอย่างยิ่งในระบบการสืบค้น ข้อมูลจากอินเทอร์เน็ต เทคโนโลยีของการค้นหาข้อมูลให้ได้รวดเร็วและถูกต้องตามที่ต้องการยังเป็นหัว ข้อที่มีผู้สนใจพัฒนาอย่างมาก โดยเฉพาะการประยุกต์ใช้หลักทางปัญญาประดิษฐ์เข้าไปช่วยในการทำดัชนีและค้นหา เสิร์ชเอนจินที่สามารถสืบค้นคำในภาษาไทยก็นับว่าเป็นสิ่งที่ต้องการอย่างมาก และยังเป็นที่รอคอยให้มีการพัฒนาออกมาใช้งานได้อย่างสมบูรณ์แบบ


ที่มา: http://www.ku.ac.th/e-magazine/october44/it/search.html

Comments