Skip to main content
🐘

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;