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.
giappi viết 13:41 ngày 10/10/2018
Mình chưa làm thế bao giờ ,bởi vì mình không dùng mysql
chiase.net viết 13:40 ngày 10/10/2018
cái bạn nói mình chưa tìm hiểu.
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
nhoemzx viết 13:51 ngày 10/10/2018
Được gửi bởi chiase.net
cái bạn nói mình chưa tìm hiểu.
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
2 cách đầu tiên thì sẽ phải đi cùng với nhau, và mình không muốn để cập vì có thể chiển khai, nhưng như đã nói, làm như vậy sẽ bị data redundancy, và đi ngược lại cấu trúc logic của database.

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).
nhoemzx viết 13:46 ngày 10/10/2018
Được gửi bởi giappi
Mình chưa làm thế bao giờ ,bởi vì mình không dùng mysql
Regular expression, có thể sử dụng ở hầu hết các database systems, scripting languages và programing languages. Nên không nhất thiết phải là MySql.
QuanN viết 13:49 ngày 10/10/2018
Bạn thử vọc với Vietnamese Collation chưa?
nhoemzx viết 13:40 ngày 10/10/2018
Không phải ai và lúc nào mình cũng có access với MySQL configuration. Mình thừ rồi, nhưng kết quả không được ưng ý lắm, ví dụ: tìm nguoi den, trong db: Người Đến Sau, sẽ không trả về kết quả.
Bài liên quan
0