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

MySQL - Cara mendapatkan hasil pencarian dengan relevansi yang akurat

Anda dapat menggunakan fungsi string, seperti:

select id, name
from subjects
where name like concat('%', @search, '%')
order by 
  name like concat(@search, '%') desc,
  ifnull(nullif(instr(name, concat(' ', @search)), 0), 99999),
  ifnull(nullif(instr(name, @search), 0), 99999),
  name;

Ini memberi Anda semua entri yang berisi @search. Pertama yang memilikinya di awal, kemudian yang memilikinya setelah dikosongkan, lalu berdasarkan posisi kemunculannya, lalu abjad.

name like concat(@search, '%') desc menggunakan logika boolean MySQL. 1 =true, 0 =false, jadi pengurutan ini akan menghasilkan true terlebih dahulu.

SQL fiddle:http://sqlfiddle.com/#!9/c6321a/1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat terhubung ke server MySQL di '127.0.0.1' (10061) (2003)

  2. Hitung persentil dari keterkinian di MySQL

  3. Kueri pemilihan SQL menggunakan fungsi gabungan, kelompokkan, dan agregat

  4. Apa yang setara dengan kueri MySQL dari PHP strip_tags?

  5. MySQLNonTransientConnectionException Tidak dapat membuat koneksi ke server database. Disebabkan oleh:java.lang.NullPointerException