Postgresql: Từ Tiếng Việt có dấu thành Tieng Viet co dau (part 2)
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:
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ả:
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ì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