Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Meningkatkan Perkaitan dalam Carian Teks Penuh MySQL untuk Medan Tertentu?

Bagaimana untuk Meningkatkan Perkaitan dalam Carian Teks Penuh MySQL untuk Medan Tertentu?

Susan Sarandon
Susan Sarandonasal
2024-11-07 03:02:03472semak imbas

How to Boost Relevance in MySQL Fulltext Search for Specific Fields?

Cara Meningkatkan Perkaitan Carian Teks Penuh MySQL untuk Medan Tertentu

Andaikan anda mempunyai pangkalan data dengan dua lajur: kata kunci dan kandungan. Anda telah membuat indeks teks penuh yang meliputi kedua-dua lajur. Tetapi, anda ingin mengutamakan baris dengan perkataan khusus dalam lajur kata kunci berbanding dengan perkataan yang sama dalam lajur kandungan.

Penyelesaian:

Buat tiga indeks teks penuh:

  1. Indeks pada lajur kata kunci sahaja
  2. Indeks pada lajur kandungan sahaja
  3. Indeks pada kedua-dua kata kunci dan lajur kandungan

Kemudian, ubah suai pertanyaan anda seperti berikut:

SELECT id, keyword, content,
  MATCH (keyword) AGAINST ('watermelon') AS rel1,
  MATCH (content) AGAINST ('watermelon') AS rel2
FROM table
WHERE MATCH (keyword,content) AGAINST ('watermelon')
ORDER BY (rel1*1.5)+(rel2) DESC

Penjelasan:

  • rel1 dan rel2 mengira perkaitan pertanyaan anda dalam kata kunci dan lajur kandungan, masing-masing.
  • Dengan mendarab rel1 dengan 1.5, anda memberikan wajaran yang lebih tinggi kepada kata kunci.
  • Klausa WHERE masih menggunakan indeks komposit pada kata kunci dan kandungan untuk memastikan hasil dikembalikan.
  • Teknik ini membolehkan anda mengawal ingat semula (hasil yang dikembalikan) dan perkaitan (bagaimana pemadanan diutamakan), memberikan lebih penonjolan pada medan tertentu.

Atas ialah kandungan terperinci Bagaimana untuk Meningkatkan Perkaitan dalam Carian Teks Penuh MySQL untuk Medan Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn