Saya mencoba memiliki skor untuk seluruh bagian dari pernyataan SELECT
SELECT *,MATCH(`result`) AGAINST('keyword') as `score` FROM `table1` WHERE MATCH(`result`) AGAINST('keyword')
UNION
SELECT *,MATCH(`content`) AGAINST('keyword') as `score` FROM `table2` WHERE MATCH(`content`) AGAINST('keyword')
UNION
SELECT *,MATCH(`text`) AGAINST('keyword') as `score` FROM `table3` WHERE MATCH(`text`) AGAINST('keyword')
Dalam kasus tersebut skor per tabel + nilai tidak diurutkan berdasarkan relevansi
Tetapi saya mencoba metode ini, yang berfungsi tetapi tidak layak untuk diproduksi
SELECT * FROM (
SELECT *,MATCH(`result`) AGAINST('keyword') as `score` FROM `table1` WHERE MATCH(`result`) AGAINST('keyword')
UNION
SELECT *,MATCH(`content`) AGAINST('keyword') as `score` FROM `table2` WHERE MATCH(`content`) AGAINST('keyword')
UNION
SELECT *,MATCH(`text`) AGAINST('keyword') as `score` FROM `table3` WHERE MATCH(`text`) AGAINST('keyword')
) as `combined` ORDER BY `score` DESC
Kode di atas tidak disukai karena skor ada per tabel, mereka bergabung dan dipesan. Pendekatan yang buruk.
Jadi saya mencoba MATCH() AGAINST()
untuk data
dalam TOP LEVEL SELECT juga ini. (TIDAK BEKERJA)
SELECT *,MATCH(`data`) AGAINST('keyword') as `good_score` FROM (
SELECT *,`result` as `data`,MATCH(`result`) AGAINST('keyword') as `score` FROM `table1` WHERE MATCH(`result`) AGAINST('keyword')
UNION
SELECT *,`content` as `data`,MATCH(`content`) AGAINST('keyword') as `score` FROM `table2` WHERE MATCH(`content`) AGAINST('keyword')
UNION
SELECT *,`text` as `data`,MATCH(`text`) AGAINST('keyword') as `score` FROM `table3` WHERE MATCH(`text`) AGAINST('keyword')
) as `combined` ORDER BY `good_score` DESC
Pernyataan di atas sangat cocok untuk saya, tetapi tidak berfungsi karena data
kolom dibuat langsung dan tidak mendukung untuk memiliki INDEX FULLTEXT.
Pertanyaan saya adalah bagaimana melanjutkan untuk membuat mesin saya berfungsi.
- Bisakah Anda entah bagaimana membuat
data
FULLTEXT - Apakah ada cara untuk membuatnya berfungsi selain DI MODE BOOLEAN yang tidak mendukung skor
- Apakah ada pendekatan untuk seluruh topik ini yang akan membuatnya berhasil? Membuat tabel sementara tidak menyelesaikan ini, aturan 50% dari MATCH () TERHADAP () membuat kueri menghasilkan 0 hasil, tetapi ada banyak
- Mungkin ada sedikit hal yang saya rindukan?
- Membuat VIEW juga tidak berfungsi, MySQL tidak mendukung INDEX-es pada VIEWs.
- Mungkin itu ide yang baik untuk menggunakan MODE DI BOOLEAN dan membuat penilaian secara manual?
Saya telah bekerja untuk masalah ini selama lebih dari dua hari. Jadi saya mohon bantuan. Terima kasih.
sumber