Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pencarian kata kunci dan hasil peringkat

Ini pasti berhasil:

$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";

Item dari database diurutkan kemudian secara descending. Jadi yang paling relevan mendapat tempat pertama.

catatan:Ini berfungsi dengan baik hanya jika jumlah kata kuncinya sedikit. Karena memeriksa 3 kali untuk panjang untuk setiap kata kunci. Jadi waktu respons pada tabel yang lebih besar dan lebih banyak kata kunci akan sedikit berbeda;)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP:Cari database mysql menggunakan beberapa daftar dropdown pilih?

  2. Tidak dapat membuat tabel di meja kerja MySQL 5.2.40

  3. Ukuran untuk menyimpan alamat IPv4, IPv6 sebagai string

  4. mysql tinyint(1) vs tinyint(2) vs tinyint(3) vs tinyint(4)

  5. mysql bergabung dengan 3 tabel