Full Text Search เป็นเทคนิกการค้นหาคำที่ต้องการในเอกสารหน้าใหญ่ ๆ
ระบบฐานข้อมูลของ MySQL มีให้มาเลย แต่เห็นเขาว่าช้า
ส่วน Postgresql ไม่มีฟังก์ชั่นนี้มาให้ จำเป็นต้องติดตั้งเพิ่มเข้าไปเอง โมดูลนี้ชื่อว่า tsearch2
ซึ่งมีวิธีการติดตั้งและใช้งานที่ยุ่งยากพอควร
จึงคิดว่าถ้าเราเปลี่ยนวิธีในการจัดเก็บข้อมูล โดยแทนที่จะให้ค้นจากเนื้อหาใหญ่ ๆ แต่เราแตกข้อมูลเราออกมาเป็นคำ ๆ แล้วค้นจากคำ มันน่าจะเร็วกว่ากันมาก เพราะระบบจะทำงานกับข้อความเพียงนิดเดียว แต่จะทำงานกับตัวเลขมากกว่า จึงทำให้เร็ว แต่ข้อเสียคือตอนจัดเก็บจะช้ามาก เพราะต้องแตกเนื้อหาออกมาเป็นคำ ๆ แล้วจึงกระจายเก็บคำในฐานข้อมูล (ถ้าจุดนี้ช้ามาก อาจต้องทำเลียนแบบกูเกิล คือบันทึกก่อนแล้วมาขโมยแตกเนื้อหาในภายหลัง โดยสร้างเป็น bot ในเครื่องเราเอง ให้ทำงานคอยตรวจตราเป็นเบื้องหลัง)
จากการทดลองเบื้องต้น พบว่าการค้นหาเร็วกว่าแบบ BTree ปกติมาก (ยังไม่เคยลอง tsearch2 เพราะนึกถึงตอนอัปเกรดแล้วเลยพาลขี้เกียจติดตั้ง) แต่เรื่องที่ต้องเผชิญต่อไปคือต้องเขียนฟังก์ชั่นการแตกคำและฟังก์ชั่นการค้นหาเอาเอง
บันทีกไว้ก่อนเพื่อกันลืม เดี๋ยวค่อยกลับมาลองแนวคิดนี้อีกทีนึง
update
ลองแล้วได้ผลดีน่าพอใจ เหลือแต่เขียนฟังก์ชั่นการค้นหาให้ดีก็ใช้ได้แล้ว
ทดสอบได้ที่ ค้นเนื้อหาไพธอน
บันทึกความผิดพลาดของการใช้คำสั่ง SQL
SELECT abc FROM ... WHERE ...
SELECT 1 FROM ... WHERE ...
LIMIT 1
เข้าไปด้วย มิฉะนั้นจะทำให้ช้ามากSELECT 1 FROM ... WHERE ...
SELECT 1 FROM ... WHERE ... LIMIT 1