10/10/2018, 11:06
Truy vấn thế nào để ra kết quả đây?
Tôi dùng Mysql + PHP. Có 1 table (id, keyword):
id / keyword
1 Việt nam
2 Độc lập
3 cộng hòa
4 chủ nghĩa
5 xã hội
6 hạnh phúc
.. .....
Bây giờ tôi muốn khi người dùng nhập vào chuỗi kí tự mà trong đó có chứa các keyword như trong bảng trên thì keyword đó được lấy ra để hiển thị.
Vd người dùng nhập: " Cộng hòa xã hội chủ nghĩa Việt nam" thì các keyword được lấy ra là : Việt nam, cộng hòa, chủ nghĩa, xã hội/
Trong mysql có hàm nào giải quyết gọn vấn đề này không ( truy vấn chính xác ngay cả đối với tiếng Việt nhé ).
id / keyword
1 Việt nam
2 Độc lập
3 cộng hòa
4 chủ nghĩa
5 xã hội
6 hạnh phúc
.. .....
Bây giờ tôi muốn khi người dùng nhập vào chuỗi kí tự mà trong đó có chứa các keyword như trong bảng trên thì keyword đó được lấy ra để hiển thị.
Vd người dùng nhập: " Cộng hòa xã hội chủ nghĩa Việt nam" thì các keyword được lấy ra là : Việt nam, cộng hòa, chủ nghĩa, xã hội/
Trong mysql có hàm nào giải quyết gọn vấn đề này không ( truy vấn chính xác ngay cả đối với tiếng Việt nhé ).
Bài liên quan
cái này cũng dễ mà mình quên mất oy.giờ lục lại mất nhiều thời gian lắm.
bạn tìm hiểu thêm nhé
- đánh index cho các keyword trong db
- khi người dùng nhập 1 đoạn, lấy keyword có index cao nhất ở db rồi tìm trong đoạn kia có key đó ko. Nếu ko có thì tìm với keyword có index thấp hơn.
Còn tìm key trong 1 đoạn thì có nhiều cách, đơn giản lắm, bạn tự tìm hiểu ở php nhá
Good luck.
select * from dbo.[tableName] where keyword like N'%' + @keyword + '%'
- với @keyword là từ khóa nhập vào:ví dụ ( 'việt nam','cộng hòa',...)
- dbo.[tableName]: bảng thông tin..
- '%' + @keyword + '%' : để so sánh từng chuỗi nhỏ với @keyword, nếu không có '%' thì sẽ so sánh cả chuỗi.
- N: chuỗi tiếng việt
KHông biết với yêu cầu của bạn thì có thể làm ngược lại được ko, thử xem.
Select * From table where keyword LIKE CONCAT('%',".$String.",'%')