ใน Serendipity 0.8.2 นี้ การ Search ภาษาไทย ยังทำได้ไม่ดีเท่าไหร่ สิ่งที่ทำได้ไม่ดี จะโทษ Serendipity ก็ไม่ได้ เพราะจริงๆ Search Function ที่ Serendipity ใช้ เป็น Function Search ของ MySQL ซึ่งมันไม่ Support ภาษาไทยเท่าไหร่นัก ในครั้งนี้ จะพูดถึงการเพิ่มประสิทธิภาพ ที่แม้ว่าจะดีขึ้นเพียงเล็กน้อย แต่ก็ดีกว่า ระบบ Search แบบเดิมของ Serendipity โดยท่านจะต้องแก้ไข Code เองดังนี้
ไฟล์ : function_entries.inc.php
ฟังก์ชั่น : function serendipity_searchEntries
line 446 : $find_part = "MATCH(title,body,extended) AGAINST('$term' IN BOOLEAN MODE)";
บรรทัดนี้จะช่วยให้ Match ของคำเหมือน Search Engine คือ เราสามารถใส่ ดาว ข้างหน้าหรือตามหลังข้อความ (เหมือนการ Search หาไฟล์ใน DOS) เช่น เรา Search คำว่า cat* ผลลัพธ์จะได้ cat, category , catwalk เป็นต้น ซึ่งจะได้ผลดีกับภาษาไทย เพราะว่าภาษาไทยไม่มีการแบ่งแยกคำ แต่ทั้งนี้ การแก้ไขเป็นบรรทัดดังกล่าว เวลา Search ยังต้องพิมพ์เช่น หมากรุก อยู่นะ ไม่งั้นก็จะหาไม่เจออย่างเดิม ไม่อย่างนั้นก็ให้แก้ไข Code เป็นดังข้างล่างนี้
line 446 : $find_part = "MATCH(title,body,extended) AGAINST('*$term*' IN BOOLEAN MODE)";
แบบนี้มันจะใส่ * ตอน Search ให้เอง ผู้ใช้ก็ไม่ต้องพิมพ์แหละ แต่ไม่แน่นำสักเท่าไหร่นะ.
ต่อมาแก้ไขอีก 3 บรรทัดนี้
line 479 : e.exflag,
line 480 : $find_part AS score
line 483 : ORDER BY score DESC
3 บรรทัดนี้ จะให้ผลการ Search แบบ Search Engine คือ เดิมของ Serendipity จะแสดงผลจากใหม่สุดไปยังเก่า แต่การใส่แบบนี้ จะเป็นการเรียงตามคะแนนความถูกต้องของคำแทน ก็หวังว่าจะทนใช้ไปได้ก่อนนะ.
จริงๆมีรูปแบบอื่นที่เหมาะสมกว่าในการ Search ภาษาไทย คือการใช้ Function ของ PHP ไปเลย เป็นต้น ซึ่งได้เสนอ ผู้ทำโปรแกรม Serendipity ไปแล้ว ดังกระทู้นี้
Comments
Mon, 23.06.2008 00:15
good idea
Fri, 20.06.2008 00:50
โอ้ ปั้นหมีโหดมั่งๆ อิ อิ
Thu, 19.06.2008 11:46
ขอบคุณมาก ๆ เห็นแล้วอมยิ้มแก้ม ปริ ^^
Thu, 19.06.2008 11:37
เห็นแล้ว แอบอมยิ้ม น่ารักมาก ๆ ค่ะ