Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tốt nhất để thực hiện tìm kiếm có trọng số trên nhiều trường trong mysql?

Có thể cách tiếp cận thực hiện tìm kiếm / kết quả có trọng số này phù hợp với bạn:

SELECT *,
    IF(
            `name` LIKE "searchterm%",  20, 
         IF(`name` LIKE "%searchterm%", 10, 0)
      )
      + IF(`description` LIKE "%searchterm%", 5,  0)
      + IF(`url`         LIKE "%searchterm%", 1,  0)
    AS `weight`
FROM `myTable`
WHERE (
    `name` LIKE "%searchterm%" 
    OR `description` LIKE "%searchterm%"
    OR `url`         LIKE "%searchterm%"
)
ORDER BY `weight` DESC
LIMIT 20

Nó sử dụng một truy vấn con được chọn để cung cấp trọng số cho việc sắp xếp các kết quả. Trong trường hợp này, ba trường được tìm kiếm, bạn có thể chỉ định trọng số cho mỗi trường. Nó có lẽ ít tốn kém hơn các công đoàn và có lẽ là một trong những cách nhanh hơn chỉ với MySQL thuần túy.

Nếu bạn có nhiều dữ liệu hơn và cần kết quả nhanh hơn, bạn có thể cân nhắc sử dụng thứ gì đó như Sphinx hoặc Lucene.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách bảo mật máy chủ MySQL / MariaDB

  2. MySQL - Không thể thêm hoặc cập nhật hàng con:ràng buộc khóa ngoại không thành công

  3. Cách kiểm tra trạng thái trình lập lịch sự kiện mysql

  4. SQL liệt kê tất cả các sinh nhật trong vòng 14 ngày tới và trước đó

  5. Hệ thống thông báo sử dụng php và mysql