Skip to main content
🗃️

SQLite FTS5

kham-sqlite เป็น loadable extension สำหรับ SQLite ที่ให้ custom FTS5 tokenizer ช่วยตัดคำภาษาไทยในการทำ FTS5 MATCH query ให้ถูกต้อง

1

สิ่งที่ต้องมีก่อน

SQLite ที่เปิดใช้งาน FTS5 และรองรับ load_extension บน macOS ต้องติดตั้งจาก Homebrew เพราะ system sqlite3 ปิด load_extension

brew install sqlite
2

Build extension

cargo build -p kham-sqlite --release
# ไฟล์อยู่ที่:
#   Linux:  target/release/libkham_sqlite.so
#   macOS:  target/release/libkham_sqlite.dylib
3

Load และสร้างตาราง FTS5

.load ./target/release/libkham_sqlite

CREATE VIRTUAL TABLE docs USING fts5(
  title, body,
  tokenize = 'kham'
);
4

Insert และค้นหา

INSERT INTO docs VALUES
  ('อาหารไทย', 'กินข้าวกับปลาและผัก'),
  ('เมืองหลวง', 'กรุงเทพมหานครเป็นเมืองหลวงของประเทศไทย');

SELECT * FROM docs WHERE docs MATCH 'ปลา';
SELECT snippet(docs, 1, '<b>', '</b>', '…', 10)
FROM docs WHERE docs MATCH 'กรุงเทพ';