Dari dokumen MySQL
-
+
Tanda plus di depan menunjukkan bahwa kata ini harus ada di setiap baris yang dikembalikan. -
*
Tanda bintang berfungsi sebagai operator pemotongan (atau wildcard). Tidak seperti operator lain, itu harus ditambahkan ke kata yang akan terpengaruh. Kata-kata cocok jika dimulai dengan kata sebelum *operator.Jika sebuah kata dispesifikasikan dengan operator pemotongan, kata tersebut tidak dihilangkan dari kueri boolean, bahkan jika terlalu pendek (seperti yang ditentukan dari pengaturan ft_min_word_len) atau stopword. Hal ini terjadi karena kata tersebut tidak dilihat sebagai kata yang terlalu pendek atau sebagai stopword, melainkan sebagai awalan yang harus ada dalam dokumen berupa kata yang diawali dengan awalan .
Dalam Konteks:
PERTANDINGAN(...) MELAWAN(...)
MATCH (name) AGAINST ('+ski*' IN BOOLEAN MODE)
berarti Anda sedang mencari baris di mana sebuah kata dalam name
kolom harus berisi ski
, dan harus dimulai dengan kata ski
.
Dari set yang Anda poskan, Dartmouth Skiway
adalah satu-satunya name
yang sesuai dengan persyaratan ini:berisi kata ski
, dan diawali dengan kata ski
.
name
lainnya kolom, meskipun cocok dengan aturan pertama:harus berisi ski
, mereka tidak diawali dengan ski
, sebagaimana diatur dalam aturan Anda. Baris yang dikembalikan oleh penelusuran boolean Anda adalah satu-satunya baris dengan name
kolom yang berisi kata yang keduanya mengandung ski
dan merupakan kata diawali dengan ski
.
Seperti yang disarankan oleh ajreal, coba kurangi ft_min_len_word_setting
di my.cnf
. Pencarian Anda mungkin gagal untuk mendapatkan hasil yang Anda harapkan karena pengaturan default. Coba kurangi menjadi 3.
kolom MANA SEPERTI %text%
WHERE name LIKE "%ski%"
mencari baris dengan name
kolom yang berisi ski
, di mana pun kata itu muncul.