You want to perform
a FULLTEXT
search
for a phrase; that is, for words that occur adjacent to each other and
in a specific order.
To find rows that contain a particular phrase, you can’t use a
simple FULLTEXT
search:
mysql>SELECT COUNT(*) FROM kjv
->WHERE MATCH(vtext) AGAINST('still small voice'),
+----------+ | COUNT(*) | +----------+ | 548 | +----------+
The query returns a result, but it’s not the result you’re
looking for. A FULLTEXT
search
computes a relevance ranking based on the presence of each word
individually, no matter where it occurs within the vtext
column, and the ranking will be
nonzero as long as any of the words are present. Consequently, this
kind of statement tends to find too many rows.
FULLTEXT
searching supports
phrase searching in Boolean mode. To use it, place the phrase in
double quotes within the search string:
mysql>SELECT COUNT(*) FROM kjv
->WHERE MATCH(vtext) AGAINST('"still small voice"' IN BOOLEAN MODE);
+----------+ | COUNT(*) | +----------+ | 1 | +----------+
A phrase match succeeds if a column contains the same words as in the phrase, in the order specified.
18.226.187.233