Drupal Thai Search Module

By jt

ผมได้ทดลองปรับแต่งโมดูล search ของ drupal โดยแกะโค๊ดดู แล้วลองปรับแต่ง ปรากฎว่าสามารถแก้ปัญหาการ search ได้ในระดับหนึ่งเลยนำมาให้เพื่อนๆลองทดสอบกันดู โดยทำตามนี้ครับ

1. หลังจากติดตั้งโมดูล search แล้ว เราต้องแก้โค๊ดในไฟล์ search.module เมื่อหาเจอก็เปิดขึ้นมาเลยครับ
2. ค้นหาโค๊ด $text = preg_replace('/['. PREG_CLASS_SEARCH_EXCLUDE .']+/u', ' ', $text); แล้วให้ comment ทิ้ง ก็จะเป็น //$text = preg_replace('/['. PREG_CLASS_SEARCH_EXCLUDE .']+/u', ' ', $text); สาเหตุที่ทำอย่างนี้ก็เพราะว่า โค๊ดนี้จะทำการตัดคำ ซึ่งจะใช้ได้ดีในภาษาอังกฤษ แต่กับภาษาไทยจะทำให้เพี้ยน ซึ่งเป็นสาเหตุหลักที่ drupal ทำการ search ภาษาไทยไม่เจอ
3. ค้นหาโค๊ด $query2 = substr(str_repeat("i.word = '%s' OR ", count($arguments2)), 0, -4); แล้วเปลี่ยนเป็น $query2 = substr(str_repeat("i.word LIKE '%%%s%' OR ", count($arguments2)), 0, -4); สาเหตุที่ทำอย่างนี้ก็เพราะว่า โค๊ดนี้เราไม่ต้องการใช้เท่ากับ แต่ต้องการใช้ LIKE แบบส่วนใดส่วนหนึ่งของคำค้น ซึ่งจะทำให้สามารถหาคำไทยเจอในประโยค จากนั้นบันทึกไฟล์นี้
4. สุดท้ายทำการรัน cron (Administer › Reports > Status report > Cron maintenance tasks > run cron manually) เพื่อจะทำการ re-index ใหม่ แล้วลองทดสอบ search ดู

หากเพื่อนๆลองแล้ว ได้หรือไม่ได้ผลยังไง แจ้งด้วยนะครับ จะได้นำไปปรับปรุง

7 comments

By Oranjer
1 ปี 24 weeks ago

ตัวนี้ใช่มัั้ยครับ

ตัวนี้ใช่มัั้ยครับ แปะลิงค์ให้ จริง ๆ น่าจะโมแล้วอัพให้โหลดเลยน่ะครับ แต่ยังไงก็ขอบคุณในน้ำใจคุณ jt จริง ๆครับ

Thaiseach

รูปภาพของ jt
By jt
1 ปี 24 weeks ago

ไม่ใช่ครับ ผมโมจากโมดูล

ไม่ใช่ครับ ผมโมจากโมดูล search ของ drupal โดยตรงครับ

รูปภาพของ waterguy
By waterguy
1 ปี 24 weeks ago

มีวิธีอื่นที่ดีกว่า โม

มีวิธีอื่นที่ดีกว่า โม ไหมครับ พอดีท่านเก่ง PHP อยากให้ไปดูระบบตัดคำ ว่ามีทางแก้ให้ตัดคำไทยได้ไหม

เพื่อที่อนาคต จะได้ไม่ต้องมาโมแก้ตลอด อยากให้ผูกติดไปกับ drupal core เลยครับ

ยังไงก็ขอบคุณที่แบ่งปันข้อมูลที่คุณศึกษามาครับ นับถือๆๆๆ

รูปภาพของ jt
By jt
1 ปี 23 weeks ago

เรื่องระบบตัดคำไทยนี่

เรื่องระบบตัดคำไทยนี่ เป็นปัญหาเหมือนกันทุกระบบครับ แต่ระบบ search ของ drupal มันดีอยู่แล้ว และโมดูล search ถือเป็น core module ซึ่งนานๆจะมีการแก้ไขและออกมาพร้อมกับ drupal อยู่แล้ว คงจะดีนะถ้าจะให้ทาง drupal รองรับ search ภาษาไทยไปเลยหรือว่าเราจะทำโมดูล search เฉพาะภาษาไทยกันดี

รูปภาพของ waterguy
By waterguy
1 ปี 2 weeks ago

มี 2 ทางครับ 1 คุณ แก้

มี 2 ทางครับ

1 คุณ แก้ search ของ core ให้ตัดคำไทยได้ แม่นยำ

2 ถ้าสิ่งที่คุณทำตามข้อ 1 ผ่าน แล้วไม่กระทบกับภาษาอื่น คุณก็ส่งตัวที่แก้ ไปให้ drupal นำไปแก้ใน core ให้ ต่อไป drupal ก็จะมี search ที่รองรับไทยตลอดไปครับ

By ree48012
1 ปี 2 weeks ago

อยากถามว่า ถ้าเราจะแก้โมดูล

อยากถามว่า ถ้าเราจะแก้โมดูล serach มีไฟล์ไหนที่เกี่ยวข้องบ้างคะ

ความต้องการที่อยากได้คือ

เวลาที่มันค้นหามันจะค้นหาจาก tag ที่เราใส่ไปช่ายมั้ยคะ แต่วาอยากได้เจาะจงกว่านั้น คือ สามารถเลือก ภาค จังหวัด อำเภอ แล้วตามด้วยหมู่บ้านแบบนี้ จะทำได้มั้ยคะ หากเราจะเพิ่มฟิลด์แล้วเขียน โค้ดตรงส่วนนั้นเอง

By mytourstation
1 ปี 1 สัปดาห์ ago

หากเราจะแก้ โค้ดในโมดูล

หากเราจะแก้ โค้ดในโมดูล serach มีฟังชันไหนที่ให้แสดงผล ฟังชันไหนใช้ คิวรี่คำสั้ง ฟังชันไหนเรียกไปไหน พอดีต้องทำส่งจารย์ มีใครพอจะแนะนำได้มั่งมั้ยคะ