Van MySQL-documenten
-
+
Een voorlopend plusteken geeft aan dat dit woord aanwezig moet zijn in elke rij die wordt geretourneerd. -
*
De asterisk dient als de operator voor het afkappen (of jokerteken). Woorden komen overeen als ze beginnen met het woord dat voorafgaat aan de *operator.Als een woord is opgegeven met de truncatie-operator, wordt het niet verwijderd uit een booleaanse zoekopdracht, zelfs als het te kort is (zoals bepaald met de instelling ft_min_word_len) of een stopwoord. Dit gebeurt omdat het woord niet als een te kort of een stopwoord wordt gezien, maar als een voorvoegsel dat in het document aanwezig moet zijn in de vorm van een woord dat begint met het voorvoegsel .
In context:
MATCH(...) TEGEN(...)
MATCH (name) AGAINST ('+ski*' IN BOOLEAN MODE)
betekent dat u zoekt naar rijen met een woord in de name
kolom moet bevatten ski
, en moet beginnen met het woord ski
.
Van de set die je hebt gepost, Dartmouth Skiway
is de enige name
die aan deze vereisten voldoet:het bevat het woord ski
, en wordt voorafgegaan door het woord ski
.
De andere name
kolommen, hoewel ze overeenkomen met de eerste regel:moet ski
. bevatten , ze worden niet voorafgegaan door ski
, zoals bepaald in uw regel. De rij die wordt geretourneerd door uw booleaanse zoekopdracht is de enige met een name
kolom die een woord bevat dat beide bevat ski
en is een woord voorvoegsel door ski
.
Probeer, zoals voorgesteld door ajreal, de ft_min_len_word_setting
te verkleinen in my.cnf
. Uw zoekopdracht levert mogelijk niet de resultaten op die u verwacht vanwege de standaardinstelling. Probeer het te verminderen tot 3.
WAAR kolom LIKE %text%
WHERE name LIKE "%ski%"
zoekt naar rijen met name
kolommen die ski
. bevatten , ongeacht waar het woord voorkomt.