Simple Indexing for Thai documents with Lucene

public class SimpleIndexer {

public static void main(String[] args) throws Exception{

/*#สร้าง IndexWriter*/
IndexWriter writer = new IndexWriter(
//กำหนด directory สำหรับเก็บไฟล์ดัชนี
FSDirectory.open(new File(“indexdir”)),
//กำหนดตัววิเคราะห์ภาษา
new ThaiAnalyzer(),
//reindex, true = สร้างใหม่ทั้งหมด/ false = สร้างเพิ่มเติมจากไฟล์เดิม (มีโอกาสเกิด duplicate document)
true,
MaxFieldLength.UNLIMITED);

//ตัวอย่างข้อความที่ต้องการสร้างดัชนี้
String st1 = “ข้อความ”;
String st2 = “123456789”;

/*#สร้าง document*/

/*
* 1 เอกสาร หรือ document หมายถึง 1 ชุดข้อมูล ไม่ใช่ 1 หน้าเอกสาร
* เช่น ข้อมูลไฟล์ xml 1 ไฟล์ ภายในบรรจุข้อมูล 10 ชุดข้อมูล ก็จะสร้าง document ได้เป็น 10 document
*/
Document doc = new Document();

/*
ใน 1 เอกสาร หรือ document สามารถมีได้หลาย field
constructor  Field(ชื่อของ field,ค่าของ field,การเก็บไฟล์,การวิเคราะห์ข้อความ)
Store.YES = สร้างดัชนีแล้วเก็บลงไฟล์ สามารถนำกลับมาใช้ โดยไม่ต้องสร้างดัชนีใหม่อีก
Index.ANALYZED = กำหนดให้มีการวิเคราะห์ข้อความด้วย เช่น การตัดคำ
Index.NOT_ANALYZED = ไม่มีการวิเคราะห์ข้อความ
แสดงว่าการค้นหาต้องให้ keyword ที่ตรงกับค่าใน field เท่านั้น
เหมาะสำหรับข้อมูลที่เป็นชุดตัวเลข หรือ id
หรือกลุ่มข้อความที่ไม่ต้องการให้แยกส่วนใดส่วนหนึ่งออกได้
*/
Field f1 = new Field(“name”, st1, Store.YES, Index.ANALYZED);
Field f2 = new Field(“number”, st2, Store.YES, Index.NOT_ANALYZED);

//add field ที่สร้างลงใน document
doc.add(f1);
doc.add(f2);

//add document ลงในฐานดัชนี
writer.addDocument(doc);
//สิ้นสุดการสร้างดัชนีสำหรับ 1 ชุดข้อมูล

/*
* หากมีชุดข้อมูลต่อไป ให้ย้อนกลับไปเริ่มตั้งแต่การสร้าง document
* เรื่อยมาจนถึงการเพิ่ม document เข้าไปใน IndexWriter
*/

//เมื่อ document ทั้งหมดถูกสร้างและ add ลงไปใน writer แล้วจึง close write ถือเป็นการสิ้นสุดการสร้างฐานดัชนี
writer.close();

5 thoughts on “Simple Indexing for Thai documents with Lucene

  1. อยากทราบว่า ต้องใช้ jar file ตัวไหนบ้างในการทำ index ภาษาไทย ครับ

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

This site uses Akismet to reduce spam. Learn how your comment data is processed.