Rumah > pangkalan data > tutorial mysql > Mengapa Carian Teks Penuh MySQL Saya Gagal dengan Data Tidak Mencukupi dan Kata Berhenti?

Mengapa Carian Teks Penuh MySQL Saya Gagal dengan Data Tidak Mencukupi dan Kata Berhenti?

Susan Sarandon
Lepaskan: 2024-12-04 15:28:12
asal
418 orang telah melayarinya

Why is My MySQL Fulltext Search Failing with Insufficient Data and Stop Words?

Kegagalan Carian Teks Penuh MySQL: Data Tidak Mencukupi dan Kata Henti

Masalahnya

Apabila cuba melakukan carian teks penuh pada jadual MySQL yang mengandungi maklumat produk, keputusan tidak dikembalikan walaupun terdapat istilah yang sepadan. Sebagai contoh, carian untuk "pen" atau "satu pen" dalam lajur "Produk" tidak mengembalikan hasil.

Penyiasatan

Setelah memeriksa skema jadual, didapati bahawa lajur "Produk" ditakrifkan sebagai indeks FULLTEXT. Walau bagaimanapun, jadual hanya mengandungi dua baris data, yang termasuk istilah "pen" dan "satu pen."

Penyelesaian

1. Meningkatkan Kepelbagaian Data:

Algoritma carian teks penuh memerlukan jumlah data yang mencukupi untuk mengesan corak yang bermakna. Dengan hanya dua baris data, algoritma tidak dapat membezakan antara perkataan biasa dan perkataan luar biasa, mengakibatkan hasil carian yang lemah.

Contoh:

CREATE TABLE testproduct
(
    Id                VARCHAR(16),
    prod_name           TEXT,
    ProductIdType     VARCHAR(8),
  PRIMARY KEY (Id),
  FULLTEXT (prod_name)
) ENGINE=MyISAM;

insert into testproduct (id,prod_name,productidtype) values ('B00005N5PF','one pen and a good price for a pen','ASIN');
insert into testproduct (id,prod_name,productidtype) values ('B570J5XS3C',null,'ASIN');
Salin selepas log masuk

Dengan memasukkan lebih banyak data dengan pelbagai istilah dan frasa, algoritma boleh mengklasifikasikan perkataan dengan lebih baik dan meningkatkan carian ketepatan.

2. Mengatasi Kata Henti:

MySQL mengekalkan senarai perkataan biasa, dikenali sebagai kata henti, yang biasanya dikecualikan daripada carian teks penuh. Walau bagaimanapun, dalam sesetengah kes, perkataan henti mungkin berkaitan dengan carian.

Contoh:

-- Disable stopword filtering
SET ft_stopword_file = '';

-- Rebuild FULLTEXT indexes
ALTER TABLE testproduct REBUILD INDEX prod_name;
Salin selepas log masuk

Dengan mengatasi senarai hentian lalai, istilah yang berkaitan seperti "tahun " atau "skor" boleh disertakan dalam hasil carian.

3. Menggunakan Mod Boolean dan Bahasa Asli:

Mod Boolean memerlukan padanan tepat, manakala mod bahasa semula jadi membenarkan variasi dan sinonim. Menggunakan mod bahasa semula jadi boleh meluaskan hasil carian.

Contoh:

SELECT * FROM testproduct WHERE MATCH(prod_name) AGAINST('+harpoon +article' IN NATURAL LANGUAGE MODE);
Salin selepas log masuk

Dengan menggunakan teknik ini, fungsi carian teks penuh boleh dipertingkatkan untuk memberikan yang tepat dan hasil yang bermakna untuk julat pertanyaan yang lebih luas.

Atas ialah kandungan terperinci Mengapa Carian Teks Penuh MySQL Saya Gagal dengan Data Tidak Mencukupi dan Kata Berhenti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan