10-28-2006, 08:16 PM
| 100% (1)
The boolean full-text search
capability supports the following operators:
A leading plus sign indicates that this word must be present in each row that is returned.
A leading minus sign indicates that this word must not be present in any of the rows that are returned.
- (no operator)
By default (when neither + nor - is specified) the word is optional, but the rows that contain it are rated higher. This mimics the behavior of MATCH() ... AGAINST() without the IN BOOLEAN MODE modifier.
- > <
These two operators are used to change a word's contribution to the relevance value that is assigned to a row. The > operator increases the contribution and the < operator decreases it. See the example below.
- ( )
Parentheses are used to group words into subexpressions. Parenthesized groups can be nested.
A leading tilde acts as a negation operator, causing the word's contribution to the row's relevance to be negative. This is useful for marking “noise” words. A row containing such a word is rated lower than others, but is not excluded altogether, as it would be with the - operator.
The asterisk serves as the truncation operator. Unlike the other operators, it should be appended to the word to be affected.
A phrase that is enclosed within double quote (‘"’) characters matches only rows that contain the phrase literally, as it was typed. The full-text engine splits the phrase into words, performs a search in the FULLTEXT index for the words. The engine then performs a substring search for the phrase in the records that are found, so the match must include non-word characters in the phrase. For example, "test phrase" does not match "test, phrase".
If the phrase contains no words that are in the index, the result is empty. For example, if all words are either stopwords or shorter than the minimum length of indexed words, the result is empty.
The following examples demonstrate some search strings that use boolean full-text operators:
- 'apple banana'
Find rows that contain at least one of the two words.
- '+apple +juice'
Find rows that contain both words.
- '+apple macintosh'
Find rows that contain the word “apple”, but rank rows higher if they also contain “macintosh”.
- '+apple -macintosh'
Find rows that contain the word “apple” but not “macintosh”.
- '+apple +(>turnover <strudel)'
Find rows that contain the words “apple” and “turnover”, or “apple” and “strudel” (in any order), but rank “apple turnover” higher than “apple strudel”.
Find rows that contain words such as “apple”, “apples”, “applesauce”, or “applet”.
- '"some words"'
Find rows that contain the exact phrase “some words” (for example, rows that contain “some words of wisdom” but not “some noise words”). Note that the ‘"’ characters that surround the phrase are operator characters that delimit the phrase. They are not the quotes that surround the search string itself.
Some words are ignored in full-text searches:
- Any word that is too short is ignored. The default minimum length of words that are found by full-text searches is four characters.
- Words in the stopword list are ignored. A stopword is a word such as “the” or “some” that is so common that it is considered to have zero semantic value. There is a built-in stopword list, but it can be overwritten by a user-defined list.