Generate test data instantly, just clicks.
GenerateData.com by Benjamin Keen
เอาไว้สร้างข้อมูลเยอะ ๆ สำหรับทดสอบ ใช้ง่ายมาก ๆ เลือกเอาท์พุตได้หลายรูปแบบ - ถ้าอยากเอาไปใช้ออฟไลน์ก็มีซอร์สโค้ดให้ด้วย

Generate test data instantly, just clicks.
GenerateData.com by Benjamin Keen
เอาไว้สร้างข้อมูลเยอะ ๆ สำหรับทดสอบ ใช้ง่ายมาก ๆ เลือกเอาท์พุตได้หลายรูปแบบ - ถ้าอยากเอาไปใช้ออฟไลน์ก็มีซอร์สโค้ดให้ด้วย
MySQL 5.1 allows us to use a customized full-text parser.
poakpong ถามเรื่อง fulltext ในฐานข้อมูล MySQL ว่าเอาไว้ทำอะไร
ก็คือมันเอาไว้ระบุไว้ที่ช่องข้อมูล (field) ประเภทข้อความ (char, varchar, text) เพื่อบอกให้ MySQL มันทำดัชนี (index) สำหรับการค้นหาแบบ full-text search น่ะ
ที่เคย ๆ เขียนกัน เวลาจะหาอะไรใน MySQL เราก็จะใช้ LIKE "%คำที่หา%"
โดย LIKE มันจะวิ่งไปเปรียบเทียบข้อความในแต่ละช่องข้อมูล ทำนอง regular expression
ส่วนกรณี full-text search ใน MySQL จะใช้คำสั่ง MATCH (ชื่อฟิลด์) AGAINST (คำที่หา)
ซึ่งมันจะค้นจากดัชนีคำที่ MySQL ทำไว้ล่วงหน้า ซึ่งการค้นหาที่ตัวดัชนีแทนที่จะไปหาในตัวข้อความทั้งหมดนี้ ก็จะทำให้การค้นหามีประสิทธิภาพดีกว่า
อย่างไรก็ตาม การใช้ full-text search นี้ ก็ยังมีปัญหาสำหรับภาษาไทย นั่นก็คือ ตัวทำดัชนีคำน่ะ มันยังไม่รองรับภาษาไทย-ภาษาที่ต้องตัดคำก่อน (มีรองรับภาษาจีน/ญี่ปุ่นนิดหน่อย)
full-text search จึงยังใช้ไม่ได้สำหรับภาษาไทย ต้องใช้ LIKE กันไปก่อน
ใน MySQL รุ่น 5.1 (ตอนนี้ยังเป็น Release Candidate อยู่) ปัญหานี้ดูเหมือนจะมีทางออกได้ (ถ้ามีคนลงแรง) เพราะ MySQL 5.1 เปิดช่องให้เขียน plug-in มาเสริมการทำงานได้ ซึ่งรวมถึง full-text parser plug-in ด้วย
full-text parser นี่ มีเอาไว้สร้างรายการคำเพื่อเอาไปใส่ในดัชนี
ถ้าเรามี full-text parser ที่สร้างรายการคำไทยได้ เราก็จะสามารถใช้ฟังก์ชั่น full-text search บน MySQL กับภาษาไทยได้ทันที ที่ระดับฐานข้อมูลเลย (แน่นอน เราต้องมีสิทธิลงปลั๊กอินที่ว่าลงในเซิร์ฟเวอร์ฐานข้อมูลด้วย ซึ่งในกรณีเราไปเช่าเว็บโฮสต์คนอื่นใช้ ก็คงลำบากหน่อย แต่ถ้าเป็นเครื่องเราเอง ก็ไม่มีปัญหา)
ไลบรารีตัดคำไทยที่ใช้งานได้นั้น เราก็มีแล้ว เช่นใน libthai หรือจะใช้ ICU/libicu ก็ได้ แม้ทั้งหมดนี้จะต้องมีการปรับแต่งเพื่อการสร้างดัชนีด้วย (ลักษณะของคำที่ตัดออกมาเพื่อจัดหน้ากระดาษ เพื่อทำดัชนี เพื่อการแปล เพื่องานที่ต่างกัน ก็มีลักษณะแตกต่างกัน) แต่คิดว่าน่าจะอยู่ในวิสัยที่จะทำได้
เป็นโครงงานจบการศึกษา - senior project - Google Summer of Code - ประกวด NSC ... ??
(ภาษาโปรแกรม C หรือ C++)
(อาจจะมีคนทำอยู่/เสร็จแล้วก็ได้ ... เหมือน อ.ธวัชชัย กับ พี่สัมพันธ์ เคยสนใจ (แต่ตอนนั้นโครงสร้างพื้นฐานยังไม่อำนวยให้แก้ไขได้ในลักษณะปลั๊กอินเช่นนี้) ... ใครรู้อะไรก็แจ้งข่าวหน่อยครับ ;) )
technorati tags: MySQL, Thai, plug-in, fulltext search
นั่งหาบั๊กมาสองวัน ผิดตรงไหนฟะ
เพิ่งจะเจอตะกี้
ผมพยายามต่อ MySQL จาก Java ไม่ได้ซักทีแฮะ เอ ก่อนหน้านี้ (ก่อนฟอร์แมตเครื่อง) ยังใช้ได้นี่นา
ใช้ JDBC driver มาตรฐานจาก MySQL เอง คอมไพล์ก็ผ่านดี ไม่มีปัญหา
ปรากฎว่า เราเรียกใช้ jar ผิดตัว - ใส่ชุดไลบรารีถูก แต่ในชุดไลบรารีนั้น ระบุไฟล์ jar ผิดตัว
มันก็เลยหาคลาส (com.mysql.jdbc.Driver) ไม่เจอไง เฮ้อ~
(ถ้าใช้ jar อันที่ผิด จะเจอคลาสนี้ตอนเขียน (ทดสอบโดยการกด Ctrl-space เพื่อให้ NetBeans มันแสดงแพ็คเกจ/คลาสต่าง ๆ ให้ดู) แต่ไม่เจอตอนรันนะ)
อันที่ไปใช้ผิด ชื่อ mysql-connector-java-5.0.4-bin-g.jar
ส่วนอันที่ถูก ชื่อ mysql-connector-java-5.0.4-bin.jar
งี่เง่ามาก ๆ - -"
MySQL 5 - Connection Character Sets and Collations
มีปัญหา จะใช้ PEAR::MDB2 อ่านข้อความ utf-8 จาก MySQL (โพสต์ไว้ที่ Narisa.com) ปรากฏว่าข้อความ(ภาษาไทย, ภาษา non-Latin1)กลายเป็น ??? หมดเลย
หาในเน็ตอยู่นาน ปรากฏว่า ต้องเพิ่มคำสั่งนี้เข้าไปก่อนจะเริ่ม query SELECT
$db->query("SET CHARACTER SET utf8");
แต่ทำแบบนี้ก็กลายเป็นว่า ไม่รู้จะใช้ MDB2 (database abstraction layer) ไปทำไม เพราะ query นี้มันมีเฉพาะ MySQL ! :(
มีคนแจ้ง “บั๊ก” (ขอเพิ่มฟีเจอร์) ไว้แล้ว
สถาบันส่งเสริมการจัดการความรู้เพื่อสังคม (สคส.) กำลังจะให้ทุนเพื่อพัฒนาความสามารถในการค้นหาข้อความภาษาไทย (Thai full-text search) ในระบบฐานข้อมูลโอเพนซอร์ส MySQL โดยมีงบประมาณ 200,000 บาท
โดยตอนนี้ มีร่างข้อเสนอสำหรับโครงการแล้ว และคณะทำงานเห็นว่า น่าจะรับฟังความเห็นของสาธารณะเสียหน่อย เกี่ยวกับร่างข้อเสนอนี้
ใครสนใจ ก็ลองอ่านดู แล้วแสดงความคิดเห็นกันได้ที่เว็บบอร์ด LTN ห้อง General ที่กระทู้นี้ครับ — ขอบคุณครับ :)