Posts Tagged ‘python’
เข้าใจ sphinx full text search engine
จากที่เคยเกริ่นเรื่องเกี่ยวกับ sphinx full text search ไปแล้วทีนึง คราวนี้เรามาดูวิธีและหลักการทำงานของ full text search กัน
full text search engine นั้นจะทำงานในลักษณะของการทำ data ที่มาจากที่เรา config ไว้ มาทำเป็น index เฉพาะแบบของ fulltext search นั้นๆ ซึ่งแต่ละตัวก็จะไม่เหมือนกัน บางที่อาจจะไม่ได้ใช้แนวคิดนี้ แต่เห็นหลายๆ ที่จะเป็นแบบนี้ เพื่อให้สามารถ ค้นหาข้อมูลในรูปแบบของตัวเองได้
sphinx ก็เช่นเดียวกัน เราจะต้อง config ว่าให้ seletct ส่วนใด มาทำเป็น เนื้อความสำหรับ search ได้บ้าง หลังจากนั้นเราก็ตั้งใช้คำสั่งสร้าง index ขึ้นมา sphinx ก็จะสร้าง index ของตนเองขึ้นมา ให้สามารถทำการ search ได้ง่ายตามรูปแบบที่ตั่งไว้
การใช้งาน search นั่นเวลาจะใช้งานจึงต้องเขียนออกมาเป็นอีกส่วน ในส่วนใหญ่แล้วโปรแกรมพวกนี้ก็จะเปิด port อีก port ไว้เลยเป็นของตนเองอย่าง sphinx เองก็เปิด port ไว้เหมือนกัน ซึ่งตอนที่รัน เราก็สามารถ config ลงไปได้ด้วยว่าอยากจะเปิด port อะไีร เวลาสร้าง connection ก็ต่อมาที่ port นั้นๆที่ตั้งไว้
Sphinx เองเปิด port 3312 เป็น default ดูได้จาก sphinx.conf
# IP address to bind on
# optional, default is 0.0.0.0 (ie. listen on all interfaces)
#
# address = 127.0.0.1
# address = 192.168.0.1# searchd TCP port number
# mandatory, default is 3312
port = 3312
full text search engine ส่วนใหญ่จะมี library สำหรับติดต่อกับตัวเองพร้อมทั้ง reference มาให้อยู่แล้วเพื่อความสะดวกในการใช้งาน sphix ก็มีเช่นกัน คือ folder api ที่มาพร้อมๆ กับตัวที่ download มาติดตั้งแหละ มีทั้ง ภาษา PHP, ptyhon, ruby และ java เลยทีเดียว
รวมทั้งยังมี reference การใช้งานอีกด้วยที่ http://www.sphinxsearch.com/docs/current.html#api-reference
จากการที่เราทำ index ครั้งนึงเราก็จะ search ได้เพียงสิ่งที่เรานั่นสร้าง index ไป ดังนั้นเราก็ต้องทำ index เรื่อยๆ เช่นการทำ cronjob ของ indexer เป็นต้น
แต่การทำ cron ก็จะได้ ข้อมูลในการ search ไม่เป็นปัจจุบันเสมอ แต่จะ search ไปตามช่วงเวลาแทน sphinx เองก็มี mode ในการทำทั้ง merge index หรือการสร้าง index เสมอทุกๆ การใช้งาน ก็เอาไว้ต่อกันทีหลังแล้วกันนะ