Posts Tagged ‘search engine’
sphinx full text search engine
วันนี้ทำงานสบายๆ ก็เลยมาเขียนซะหน่อย ห่างหายไปจาก blog นานๆ แล้ว ที่จะพูดถึงวันนี้ก็คือ fulltext search
ช่างเป็นอะไรที่ กิน performance เครื่องสุดๆ ลองคิดถึง algorithm ง่ายของ LIKE ใน SQL นะ
1 record ก็จะมีั text เช่น ‘some text’
แล้วเราก็หาคำว่า ‘me’ ใน text นี้ มันก็ต้องหา so, om, me แล้วก็เจอ ลองคิดดูว่ามันจะหาไปกี่ที
แน่นอนว่า วิธีนี้มันโง่และทึ่มมาก เพราะทำงานธรรมดาสุดๆ คือ เทียบกันไปเรื่อยๆ การทำงานจึงเป็น loop ไป เรื่อยๆ แต่ปัจจุบันนั้นก็มีคนศึกษาเรื่องนี้และได้คิด algorithm ออกมาเพื่อที่จะจัดการกับ full text search อีกมาก บาง algorithm ก็ได้รับความนิยม จนไปสู่การนำมาใช้งานจริง
.
sphinx ก็เป็นอีก 1 ตัวที่ได้รับความนิยมอยู่ในขณะนี้ เพราะด้วย performance และการใช้งานนั้นง่าย รวมทั้งยังเป็น Open Source อีกด้วย ทำให้เปิดโลกกว้างการการเพิ่มเติมและการนำไปใช้ด้วย
sphinx search นั้นมี feature หลักคือ
- high indexing speed (upto 10 MB/sec on modern CPUs)
- high search speed (avg query is under 0.1 sec on 2-4 GB text collections)
- high scalability (upto 100 GB of text, upto 100 M documents on a single CPU)
- supports distributed searching (since v.0.9.6)
- supports MySQL natively (MyISAM and InnoDB tables are both supported)
- supports phrase searching
- supports phrase proximity ranking, providing good relevance
- supports English and Russian stemming
- supports any number of document fields (weights can be changed on the fly)
- supports document groups
- supports stopwords
- supports different search modes (“match all”, “match phrase” and “match any” as of v.0.9.5)
- generic XML interface which greatly simplifies custom integration
- pure-PHP (ie. NO module compiling etc) search client API
ซึ่งถ้าอ่านดีๆ แล้วก็จะเห็น performance นั้นสูงทีเดียวและสามารถใช้งานได้ง่ายด้วย API และยัง support กับ Mysql และ postgresql ซึ่งเป็นฐานข้อมูล แบบ open source ที่ได้รับความนิยมทั่วโลก
จากที่ได้ลองติดตั้งดู ไม่มีอะไรยากเกินไปกว่า แตก tarball -> ./configure -> make -> make install แล้วก็ config อีกนิดหน่อย แค่ ใส่ user pass และ db name ของ database server ลงไปก็เสร็จแล้ว
ข้างใน config ก็มีให้เลือก database server อยู่แล้ว สามารถเลือกรูปแบบให้เหมาะสมได้เลย
ใน tutorial นั้นก็ได้มีการเขียนติดต่อกับ PHP ได้เลย เพียงนำ lib include ไปเท่านั้น
สามารถ compile ร่วมไปกับ mysql ให้เป็น engine ของ mysql ได้
วันนี้มาเกริ่นๆ เท่านั้น เกี่ยวกับ sphinx search ต่อไปก็จะมาพูดถึงการเขียนกัน แล้วก็รายละเอียด ลึกๆ แล้วกัน
ใส่ใจ
ช่วงนี้ทำไมสนใจกับ framework นักก็ไม่รู้ เพราะคงจะขี้เกียจเขียน form แล้วมั้ง 555 ก็มันน่าเบื่อนี่นาเนอะ แต่มันก็ทำให้เรารู้จักพื้นฐานทั้งหมดที่ดี และก็มีค่ามากๆ คนที่คิด framework ได้คงจะเจอปัญหาพวกนี้มาหมดแล้ว ก็เลยมานั่งๆ คิดว่า ทำไมเราเจอปัญหาช้าจัง ไม่งั้น เราเนี่ยแหละคิด framework ได้ไปตั้งนานแล้ว เราก็ดังเลย 555
.
แต่ก็ว่าไปนั่น เจอก่อนอาจจะคิดได้ทีหลังก็ได้ เราเองเขียนอยู่ตอนนี้ก็กล้ำกลืนซะทน เขียน tag html แล้วมันเบื่อจิงๆ เขียนไปผิดไปด้วย 555
การใส่ใจกับ HTML นั้นเริ่มได้รับความสนใจจากคนเขียนเว็บและคนที่ใช้เว็บมากขึ้น จากการที่ Browser นั้นมีออกมาจากหลายค่ายมากขึ้น แล้วก็ อิทธิพลจาก search engine ทีี่โด่งดังในขณะนี้คือ google.
ถ้าดีๆ ต้อง validate w3 ผ่าน อันดับก็จะดีขึ้นไปด้วย มีผล นะ นิดนึง แล้วการที่ validate ผ่านจะทำให้การแสดงผล ถูกต้องไปด้วย ไม่มากก็น้อย
โปรแกรมหลายๆตัวต้องการที่จะทำให้ผ่าน W3 แต่ก็ยากซะเหลือเกินด้วย code แบบ inline ซะเยอะ จนตัวเองเหมือนกับต้องเขียนใหม่หมดเลย ทำให้เกิดการสร้างสรรผลงานใหม่ๆ ออกมาด้วย ก็ดีนะแต่ในด้านของการเงิน เพราะต้องเพิ่มต้นทุนเข้าไปอีก
.
ความจริงเขียนๆไปก็ไม่มีอะไรหรอกนะ แค่เซงๆ กับงานแค่นั้น inline เยอะจริงๆ แล้วก็ hard code ซะบึมเลย พูดๆไป เด่วถูกใส่ออก เอิ๊ก เหมือนข่าวเด็กที่ tweet แล้วโดนไล่ออก