Using FULLTEXT Searches
Problem
You want to search through a lot of text.
Solution
Use a FULLTEXT
index.
Discussion
You can use pattern matches to look through any number of rows, but as the amount of text goes up, the match operation can become quite slow. It’s also common to look for the same text in several string columns, which with pattern matching tends to result in unwieldy queries:
SELECT * fromtbl_name
WHEREcol1
LIKE 'pat
' ORcol2
LIKE 'pat
' ORcol3
LIKE 'pat
' ...
A useful alternative is FULLTEXT
searching, which is designed for
looking through large amounts of text and can search multiple columns
simultaneously. To use this capability, add a FULLTEXT
index to your table, and then use
the MATCH
operator to look for
strings in the indexed column or columns. FULLTEXT
indexing can be used with MyISAM
tables for nonbinary string data types (CHAR
, VARCHAR
, or TEXT
).
FULLTEXT
searching is best
illustrated with a reasonably good-sized body of text. If you don’t
have a sample dataset, several repositories of freely available
electronic text are available on the Internet. For the examples here,
the one I’ve chosen is the complete text of the King James Version of
the Bible (KJV), which is relatively large and has the useful property
of being nicely structured by book, chapter, and verse. Because of its
size, this dataset is not included with the recipes
distribution, but is available
separately as the mcb-kjv
distribution at the MySQL Cookbook web site (see
Appendix A). The mcb-kvj ...
Get MySQL Cookbook, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.