Fra MySQL-dokumenter
-
+
Et indledende plustegn angiver, at dette ord skal være til stede i hver række, der returneres. -
*
Stjernen tjener som trunkeringsoperatoren (eller jokertegn). I modsætning til de andre operatorer skal den føjes til ordet, der skal påvirkes. Ord matcher, hvis de begynder med ordet foran *operatoren.Hvis et ord er angivet med trunkeringsoperatoren, fjernes det ikke fra en boolsk forespørgsel, selvom det er for kort (som bestemt ud fra indstillingen ft_min_word_len) eller et stopord. Dette sker, fordi ordet ikke ses som for kort eller astopord, men som et præfiks, der skal være til stede i dokumentet i form af et ord, der begynder med præfikset .
I sammenhæng:
MATCH(...) MOD(...)
MATCH (name) AGAINST ('+ski*' IN BOOLEAN MODE)
betyder, at du søger efter rækker, hvor et ord i name
kolonne skal indeholde ski
, og skal begynde med ordet ski
.
Fra det sæt, du har sendt, Dartmouth Skiway
er det eneste name
der overholder disse krav:den indeholder ordet ski
, og har ordet ski
foran .
Det andet name
kolonner, selvom de matcher den første regel:skal indeholde ski
, de har ikke forstavelse med ski
, som fastsat i din regel. Rækken returneret af din boolske søgning er den eneste med et name
kolonne, der indeholder et ord, som begge indeholder ski
og er et ord med præfiks af ski
.
Som foreslået af ajreal, prøv at mindske ft_min_len_word_setting
i my.cnf
. Din søgning kan muligvis ikke give de resultater, du forventer, på grund af standardindstillingen. Prøv at reducere den til 3.
WHERE kolonne LIKE %text%
WHERE name LIKE "%ski%"
søger efter rækker med name
kolonner, der indeholder ski
, uanset hvor ordet forekommer.