Understanding full-text search - FTS
If you are looking up names or for simple strings, you are usually querying the entire content of a field. In FTS, this is different. The purpose of full-text search is to look for words or groups of words, which can be found inside a text. Therefore, FTS is more of a contains operation as you are basically never looking for an exact string.
In PostgreSQL, FTS can be done using GIN indexes. The idea is to dissect a text, extract valuable lexemes, and index those elements rather than the underlying text. To make your search even more successful, those words are preprocessed.
Here is an example:
test=# SELECT to_tsvector('english', 'A car, I want a car. I would not even mind having many cars'); to_tsvector --------------------------------------------------------------- 'car':2,6,14 'even':10 'mani':13 'mind':11 'want':4 'would':8 (1 row)
The example shows a simple sentence. The to_tsvector
function will...