Spec-Zone .ru
спецификации, руководства, описания, API
|
MATCH
(
col1
,col2
,...) AGAINST (expr
[search_modifier
])
search_modifier:
{ IN NATURAL LANGUAGE MODE | IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION | IN BOOLEAN MODE | WITH QUERY EXPANSION }
MySQL has support for full-text indexing and searching:
A full-text index in MySQL is an index of type FULLTEXT
.
Full-text indexes can be used only with InnoDB
or MyISAM
tables, and can be created only for CHAR
, VARCHAR
, or TEXT
columns.
A FULLTEXT
index definition can be given in the CREATE TABLE
statement when a table is created, or added later using ALTER TABLE
or CREATE INDEX
.
For large data sets, it is much faster to load your data into a table that has no
FULLTEXT
index and then create the index after that, than to load data into
a table that has an existing FULLTEXT
index.
Full-text searching is performed using MATCH() ... AGAINST
syntax. MATCH()
takes a comma-separated list that names the columns to be searched. AGAINST
takes a string to search for, and an optional modifier that indicates what
type of search to perform. The search string must be a string value that is constant during query evaluation.
This rules out, for example, a table column because that can differ for each row.
There are three types of full-text searches:
A natural language search interprets the search string as a phrase in natural human
language (a phrase in free text). There are no special operators. The stopword list applies, controlled
by innodb_ft_enable_stopword
,
innodb_ft_server_stopword_table
, and innodb_ft_user_stopword_table
for InnoDB
search indexes, and ft_stopword_file
for MyISAM
ones.
Full-text searches are natural language searches if the IN
NATURAL LANGUAGE MODE
modifier is given or if no modifier is given. For more information, see Section 12.9.1, "Natural Language Full-Text
Searches".
A boolean search interprets the search string using the rules of a special query
language. The string contains the words to search for. It can also contain operators that specify
requirements such that a word must be present or absent in matching rows, or that it should be weighted
higher or lower than usual. Certain common words (stopwords) are omitted from the search index and do
not match if present in the search string. The IN BOOLEAN MODE
modifier
specifies a boolean search. For more information, see Section
12.9.2, "Boolean Full-Text Searches".
A query expansion search is a modification of a natural language search. The search
string is used to perform a natural language search. Then words from the most relevant rows returned by
the search are added to the search string and the search is done again. The query returns the rows from
the second search. The IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
or
WITH QUERY EXPANSION
modifier specifies a query expansion search. For more
information, see Section 12.9.3, "Full-Text
Searches with Query Expansion".
For information about FULLTEXT
query performance, see Section
8.3.4, "Column Indexes".
For more technical details about processing for InnoDB
FULLTEXT
indexes, see Section 14.2.3.12.3, "FULLTEXT
Indexes".
Constraints on full-text searching are listed in Section 12.9.5, "Full-Text Restrictions".
The myisam_ftdump
utility dumps the contents of a MyISAM
full-text index. This may be helpful for
debugging full-text queries. See Section
4.6.2, "myisam_ftdump — Display Full-Text Index
information".