Postgresql: Từ Tiếng Việt có dấu thành Tieng Viet co dau (part 2)

nguyen duy
3 min readJul 10, 2018

--

Trong bài viết trước, tôi đã giới thiệu một cách để chuyển đổi từ Tiếng Việt có dấu sang Tieng Viet co dau, đó là sử dụng stored procedure. Cách này chạy cũng ok nhưng tương đối chậm

Trong phần này, mời các bạn đến với một cách convert khác, sử dụng một extension do Postgresql cung cấp: unaccent

Quy trình convert gồm 2 bước:

  • Cài đặt extension unaccent
  • Chỉnh sửa file unaccent.rules trong Postgres

1. Cài đặt extension unaccent

Sau khi cài đặt, chạy đoạn lệnh sau để check xem extension unaccent có convert được Tiếng Việt có dấu sang Tieng Viet co dau không:

Không được đúng cho lắm nhỉ

Kết quả thu được:

  • có --> co: OK đúng như chúng ta muốn, dấu sắc được loại bỏ
  • Tiếng --> Tiếng, Việt --> Việt, dấu --> dấu: Hmmm xem ra unaccent không convert được những chữ cái có nhiều accent, ví dụ như chữ "ế" và "ấ" có 2 accent là dấu mũ và dấu sắc, hay như chữ "ệ" có dấu mũ và dấu nặng

Để convert được những chữ cái có nhiều accent, cần đến bước thứ 2: Chỉnh sửa file unaccent.rules

2. Chỉnh sửa file unaccent.rules

File unaccent.rules nằm trong thư mục tsearch_data. Hãy tìm thư mục này trước:

  • Biến hình thành super user với câu lệnh:
sudo -i
  • Tìm thư mục tsearch_data:
find / -name tsearch_data -type d

Sau khi tìm được địa chỉ của thư mục tsearch_data, thực hiện các bước sau:

  • cd vào từng thư mục tìm được
  • mở file unaccent.rules
  • copy nội dung sau vào file unaccent.rules:

Sau khi chỉnh sửa xong, khởi động lại Postgresql, sau đó chạy lại lệnh

thu được kết quả:

yay !!!

So với cách dùng stored procedure trình bày ở bài trước, cách này cho kết quả query nhanh hơn:

Mất có 55 milliseconds để query

Mình mới lập một nhóm có tên là “Cùng học SQL” trên Facebook. Đây là nơi chúng ta chia sẻ kinh nghiệm, giải đáp thắc mắc liên quan đến SQL và database. Các bạn cùng tham gia nhé :D

Link nhóm: https://www.facebook.com/groups/882646945453283/

--

--

nguyen duy
nguyen duy

Written by nguyen duy

Software developer - Trainer at Techmaster Vietnam

Responses (1)