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

Kết quả tìm kiếm từ khóa và xếp hạng

Điều này chắc chắn hoạt động:

$searchCondition = "description LIKE '%" . implode("%' OR description LIKE '%", $searchTerms) . "%'";
$orderCondition = array();
foreach ($searchTerms as $word) {
    $orderCondition[] = "(length(description)-length(replace(description,\"".$word."\",\"\")))/length(\"".$word."\")";
}
$orderConditionString = "(".implode(" + ", $orderCondition).")";

$query = "SELECT description FROM table1 WHERE $searchCondition ORDER BY $orderConditionString DESC";

Các mục từ cơ sở dữ liệu được sắp xếp theo thứ tự giảm dần. Vì vậy, những gì có liên quan nhất sẽ chiếm vị trí đầu tiên.

lưu ý:Điều này chỉ hoạt động tốt khi số lượng từ khóa ít. Vì đã kiểm tra 3 lần độ dài cho mỗi từ khóa. Vì vậy, thời gian phản hồi trên các bảng lớn hơn và nhiều từ khóa hơn có thể sẽ khác một chút;)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Tìm kiếm hiệu quả với đối sánh từng phần từ và điểm phù hợp (FULLTEXT)

  2. so sánh hai mảng số và loại bỏ các bản sao trong php

  3. Opencart 1.5.1.3 hiển thị giá đặc biệt với ngày bắt đầu và ngày kết thúc trên trang hiển thị sản phẩm

  4. PHP làm cách nào để kiểm tra email đã có trong cơ sở dữ liệu MySQL?

  5. Khóa ngoại MySQL