Ini bukan pertanyaan sederhana. Taruhan terbaik Anda adalah menggunakan beberapa jenis pencarian teks lengkap . Pencarian teks lengkap dapat dikonfigurasi untuk memiliki stopwords (kata-kata yang dihilangkan dari pencarian - seperti kata the
) dan juga dapat memiliki batas panjang kata minimum (kata-kata dengan panjang karakter kurang dari tertentu juga dihilangkan dari pencarian.
Namun, jika Anda hanya menggunakan
SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('ISBN number on site');
Kemudian MySQL akan mengembalikan tidak hanya record dengan nilai yang Anda cari, tetapi record yang memiliki beberapa kata saja, dan dalam urutan yang berbeda. Yang Anda tunjukkan mungkin akan menjadi salah satu peringkat tertinggi, tetapi tidak ada jaminan bahwa itu akan menjadi peringkat tertinggi.
Anda mungkin ingin menggunakan Penelusuran teks lengkap Boolean
dan tambahkan +
ke setiap kata pencarian untuk memaksa MySQL mengembalikan catatan tersebut hanya yang memiliki semua kata pencarian yang ada:
SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('+ISBN +number +on +site' IN BOOLEAN MODE);
Tapi, on
harus berupa stopword (ada di daftar stipword default) atau harus lebih pendek dari panjang kata minimum, jadi harus dihilangkan dari ekspresi pencarian (Anda tidak akan mendapatkan kembali hasil apa pun):
SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('+ISBN +number +site' IN BOOLEAN MODE);
Saya tahu bahwa ini memerlukan perubahan ekspresi pencarian, namun ini akan memberi Anda hasil terbaik menggunakan fungsionalitas bawaan MySQL.
Alternatifnya adalah menggunakan mesin pencari teks lengkap lainnya, seperti sphinx untuk melakukan pencarian untuk Anda.