Cách tìm kiếm có dấu trên Mysql - Search utf8 on Mysql
solution
4
trick
2
Mysql
40
White

Sói viết ngày 31/05/2017

alt text

[vấn đề]

Đã từng ai điên tiết hoặc xin chịu thua trước việc tìm kiếm một từ tiếng việt chính xác trên cả 1 đoạn văn bản của mysql chưa ?

Như ví dụ từ ảnh trên, tôi lấy ra các hashtag có liên quan đến các từ mỹ, phẩm, mẹ. Tuy nhiên trong CSDL của tôi lại có các hashtag khác là me, my, pham, các từ này hoàn toán khác nghĩa với điều tôi cần tìm

[Giải pháp]

Chuyển đoạn text cần tìm/ so sánh của bạn thành binary(hệ nhị phân).

việc chuyển đoạn text thành hệ nhị phân giúp mysql sẽ hiểu từ có dấu và không có dấu là 2 từ hoàn toàn khác nhau và sẽ loại bỏ từ không đúng đi.

Cụ thể từ my và từ mỹ khi chuyển đổi sang binary sẽ là :

my => 01101101 01111001
mỹ => 01101101 1111011111001

câu lệnh chuyển đổi string sang binary là CONVERT('string', BINARY)

Nếu bạn cần đang sử dụng câu điều liệu % cho đoạn string mà bạn tìm kiếm thì nhớ thêm hàm CONCAT để nối string với ký tự % nhé.

đây là câu lệnh trước khi chuyển đổi sang binary

SELECT * FROM hashtags WHERE hashtag LIKE '%mẹ%' OR hashtag LIKE '%mỹ%' OR hashtag LIKE '%phẩm%'

Sau khi chuyển đổi

SELECT * FROM hashtags WHERE hashtag LIKE CONCAT('%', CONVERT('mẹ', BINARY), '%') OR hashtag LIKE CONCAT('%', CONVERT('mỹ', BINARY), '%') OR hashtag LIKE CONCAT('%', CONVERT('phẩm', BINARY), '%')

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Sói

1 bài viết.
7 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Bài viết liên quan
Male avatar
19 0
Mysql innodb internal là một chủ đề khá sâu. Bản thân tôi cũng chưa bao quát hết. Bài viết này chỉ cung cấp một cái nhìn sơ lược. Để các bạn khôn...
manhdung viết hơn 2 năm trước
19 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
1 bài viết.
7 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!