The TSQUERY data type stores a list of lexemes separated by operators. TSQUERY values are used in full-text search.
Syntax
A TSQUERY comprises individual lexemes and operators in the form: 'These' & 'lexemes' & 'are' & 'not' & 'normalized' & 'lexemes.'.
The operators in a TSQUERY are used to match a TSQUERY to a TSVECTOR. Valid TSQUERY operators are:
&(AND). Given'one' & 'two', bothoneandtwomust be present in the matchingTSVECTOR.|(OR). Given'one' | 'two', eitheroneortwomust be present in the matchingTSVECTOR.!(NOT). Given'one' & ! 'two',onemust be present andtwomust not be present in the matchingTSVECTOR.<->(FOLLOWED BY). Given'one' <-> 'two',onemust be followed bytwoin the matchingTSVECTOR.<->is equivalent to<1>. You can specify an integer<n>to indicate that lexemes must be separated byn-1other lexemes. Given'one' <4> 'two',onemust be followed by three lexemes and then followed bytwoin the matchingTSVECTOR.
You can optionally add the following to each lexeme:
One or more weight letters (
A,B,C, orD):'These' & 'lexemes':B & 'are' & 'not' & 'normalized':A & 'lexemes':BIf not specified, a lexeme's weight defaults to
D. It is only necessary to specify weights in aTSQUERYif they are also specified in aTSVECTORto be used in a comparison. The lexemes in aTSQUERYandTSVECTORwill only match if they have matching weights. For more information about weights, see the PostgreSQL documentation.
To be usable in full-text search, the lexemes must be normalized. You can do this by using the to_tsquery(), plainto_tsquery(), or phraseto_tsquery() built-in functions to convert a string input to TSQUERY:
SELECT to_tsquery('These & lexemes & are & not & normalized & lexemes.');
to_tsquery
--------------------------------
'lexem' & 'normal' & 'lexem'
Normalization removes the following from the input:
- Derivatives of words, which are reduced using a stemming algorithm.
- Stop words. These are words that are considered not useful for indexing and searching, based on the text search configuration. In the preceding example, "These", "are", and "not" are identified as stop words.
- Punctuation and capitalization.
Examples
For usage examples, see Full-Text Search.