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

Bagaimana saya menerapkan pencarian situs sederhana dengan php dan mySQL?

Semua orang menyarankan pencarian teks lengkap MySQL, namun Anda harus menyadari peringatan BESAR. Mesin pencari Fulltext hanya tersedia untuk mesin MyISAM (bukan InnoDB, yang merupakan mesin yang paling umum digunakan karena integritas referensial dan kepatuhan ACID).

Jadi, Anda memiliki beberapa opsi:

1. Pendekatan paling sederhana diuraikan oleh Particle Tree . Anda sebenarnya bisa mendapatkan pencarian peringkat dari SQL murni (tanpa teks lengkap, tidak ada apa-apa). Kueri SQL di bawah ini akan mencari tabel dan memberi peringkat hasil berdasarkan jumlah kemunculan string di bidang pencarian:

SELECT
    SUM(((LENGTH(p.body) - LENGTH(REPLACE(p.body, 'term', '')))/4) +
        ((LENGTH(p.body) - LENGTH(REPLACE(p.body, 'search', '')))/6))
    AS Occurrences
FROM
    posts AS p
GROUP BY
    p.id
ORDER BY
    Occurrences DESC

mengedit contoh mereka untuk memberikan sedikit kejelasan

Variasi pada kueri SQL di atas, menambahkan pernyataan WHERE (WHERE p.body LIKE '%whatever%you%want'), dll. mungkin akan memberikan apa yang Anda butuhkan.

2. Anda dapat mengubah skema database Anda untuk mendukung teks lengkap. Seringkali apa yang dilakukan untuk menjaga integritas referensial InnoDB, kepatuhan ACID, dan kecepatan tanpa harus menginstal plugin seperti Sphinx Fulltext Search Engine untuk MySQL adalah membagi data kutipan ke dalam tabelnya sendiri. Pada dasarnya Anda akan memiliki tabel Quotes yang merupakan tabel InnoDB, daripada memiliki "data" bidang TEXT Anda, Anda memiliki referensi "quote_data_id" yang menunjuk ke ID pada tabel Quote_Data yang merupakan tabel MyISAM. Anda dapat melakukan teks lengkap Anda di tabel MyISAM, menggabungkan ID yang dikembalikan dengan tabel InnoDB Anda dan voila Anda mendapatkan hasilnya.

3. Instal Sphinx . Semoga berhasil dengan yang ini.

Mengingat apa yang Anda jelaskan, saya akan SANGAT merekomendasikan Anda mengambil pendekatan pertama yang saya sajikan karena Anda memiliki situs berbasis basis data sederhana. Solusi 1 sederhana, selesaikan pekerjaan dengan cepat. Lucene akan sulit diatur terutama jika Anda ingin mengintegrasikannya dengan database karena Lucene dirancang terutama untuk mengindeks file, bukan database. Pencarian situs kustom Google hanya membuat situs Anda kehilangan banyak reputasi (membuat Anda terlihat amatir dan diretas), dan teks lengkap MySQL kemungkinan besar akan menyebabkan Anda mengubah skema database Anda.



  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 menginstal mysqlclient di centos

  2. Masalah koneksi MySQLdb

  3. Bagaimana cara memotong tabel menggunakan Doctrine 2?

  4. Bagaimana cara melihat file log di MySQL?

  5. MySQL Tampilkan Hibah untuk semua Pengguna