10/10/2018, 11:35
Đã có ai search tiếng việt không dấu với regular expression trong MySQL
Đã có ai thử dùng regular expression để search tiếng viết không dấu trong MySQL chưa ạ, ví dụ:
Search string: em se la nguoi ra di
db trong database: Em Sẽ Là Người Ra Đi (Lưu bằng tiếng viết trong DB)
Note:
Nếu có cách nào hay thì các bạn share, cùng tìm hiểu nhưng mình không muốn để cập về những cách này ở topic này:
Fulltext: hiện tại không support với với engine của table và mình cũng không muốn đổi engine chỉ để dùng fulltext trong MySql
Column tiếng việt không dấu: Không muốn dùng cách này vì (Data redundancy) chứ không phải mình sợ tốn storage của server)
LIKE: MySQL đã hỗ trợ, nhưng chưa test đc.
Search string: em se la nguoi ra di
db trong database: Em Sẽ Là Người Ra Đi (Lưu bằng tiếng viết trong DB)
Note:
Nếu có cách nào hay thì các bạn share, cùng tìm hiểu nhưng mình không muốn để cập về những cách này ở topic này:
Fulltext: hiện tại không support với với engine của table và mình cũng không muốn đổi engine chỉ để dùng fulltext trong MySql
Column tiếng việt không dấu: Không muốn dùng cách này vì (Data redundancy) chứ không phải mình sợ tốn storage của server)
LIKE: MySQL đã hỗ trợ, nhưng chưa test đc.
Bài liên quan
Nhưng search thì có 3 cách cơ bản.
=> lưu 1 cột không dấu nữa
=> bỏ dấu lúc select ở mệnh đề WHERE
=> Thêm dấu cho từ bạn nhập rồi LIKE,
Nếu tìm kiếm không nhiều thì cách 3 là hay nhất
Thêm dấu cho từ bạn nhập rồi LIKE <--- bạn đã thực sự triển khai cách này, nếu có, thì có thể share kết quả được không.
Mình mới làm xong function search bằng regular expression, mới test qua cũng khá triển vọng, tối về mình sẽ post chi tiết hơn. Ví dụ:
data trong table:
+ Em Sẽ Là Người Ra Đi
Các string khi search sẽ trả về kết quả:
+em se la nguoi ra di (1 phần của string cũng sẽ có kết quả, e.g.: em se, nguoi ra or nguoi ra di, nhưng ít nhất 2 từ, mình có thể specify bao nhiêu từ thì bắt đầu trả về kết quả, 1 từ cũng được nhưng như vậy sẽ too ambiguous).
+em sẽ là nguoi ra di (vừa tiếng viết không dấu, có dấu).
+ em sẽ là người ra đii (100% tiếng việt)
+em sé la ngươi ra đi (tiếng việt có dấu, nhưng sai chính tả, cũng khá phổ biến với đại đa số người dùng).