🐘
PostgreSQL FTS
kham-pg เป็น extension ค้นหาข้อความแบบ Full-Text สำหรับ PostgreSQL ช่วยตัดคำภาษาไทยในการทำ full-text search แทน parser ค่าเริ่มต้นของ PostgreSQL
1
สิ่งที่ต้องมีก่อน
PostgreSQL 14 ขึ้นไป, Rust toolchain (1.85+) และ pg_config ใน PATH
pg_config --version # PostgreSQL 14 หรือใหม่กว่า 2
Build และติดตั้ง
cargo build -p kham-pg --release
make -C kham-pg install 3
Load และตั้งค่า
LOAD 'kham';
CREATE TEXT SEARCH CONFIGURATION kham_cfg (PARSER = kham);
ALTER TEXT SEARCH CONFIGURATION kham_cfg
ADD MAPPING FOR thai WITH simple;
ALTER TEXT SEARCH CONFIGURATION kham_cfg
ADD MAPPING FOR latin WITH english_stem; 4
Index เอกสาร
CREATE TABLE articles (
id SERIAL PRIMARY KEY,
body TEXT,
tsv TSVECTOR
);
UPDATE articles SET tsv = to_tsvector('kham_cfg', body);
CREATE INDEX articles_tsv_idx ON articles USING GIN(tsv); 5
ค้นหาด้วย ts_headline
SELECT id,
ts_headline('kham_cfg', body, query,
'StartSel=<mark>, StopSel=</mark>') AS snippet
FROM articles,
to_tsquery('kham_cfg', 'ข้าว & ปลา') AS query
WHERE tsv @@ query
ORDER BY ts_rank(tsv, query) DESC;