Mencoba memecahkan masalah dengan saran RandomSeed "FULLTEXT dan Bahasa Asia dengan MySQL 5.0". Namun masalahnya adalah Anda tidak dapat melakukan pencarian 2 karakter kecuali Anda menyetel "ft_min_word_len" ke 2. Sekali lagi, layanan hosting web $1/bulan tidak mengizinkan Anda melakukan itu.
Oke, habiskan 1 malam untuk mencari solusi solusi. Konsepnya adalah untuk mengubah semua karakter non-abjad dari string UTF-8 menjadi beberapa kode unik.
Berikut adalah fungsi ajaibnya. Dipinjam dari forum CSDN dan membuat beberapa perubahan.
function UTF2UCS($str, $s) {
$str = strtolower($str);
$char = 'UTF-8';
$arr = array();
$out = "";
$c = mb_strlen($str,$char);
$t = false;
for($i =0;$i<$c;$i++){
$arr[]=mb_substr($str,$i,1,$char);
}
foreach($arr as $i=>$v){
if(preg_match('/\w/i',$v,$match)){
$out .= $v;
$t = true;
}else{
if($t) $out .= " ";
if(isset($s) && $s) $out .= "+";
$out .= bin2hex(iconv("UTF-8","UCS-2",$v))." ";
$t = false;
}
}
return $out;
}
Hasil dari
echo UTF2UCS("測試haha")
akan menjadi "6e2c 8a66 haha"
Katakanlah Anda memiliki bidang bernama "song_name". Anda hanya perlu mengonversi semua nama lagu dengan fungsi UTF2UCS, lalu simpan string terenkripsi tersebut di bidang indeks teks lengkap, misalnya "song_name_ucs".
Lain kali Anda perlu mencari sesuatu, yang perlu Anda lakukan adalah:
$temp_string = UTF2UCS('測試', true);
SELECT * FROM song WHERE MATCH (song_name_ucs) AGAINST ('$temp_string')
Ingatlah untuk memasukkan nilai true di parameter kedua UTF2UCS saat Anda membutuhkan '測' dan '試' muncul di hasil pencarian.
Ini mungkin bukan solusi terbaik, tetapi tidak memerlukan plugin atau perubahan apa pun pada sistem. Kode PHP murni.