Bird
Raised Fist0
PostgreSQLquery~20 mins

to_tsquery for search terms in PostgreSQL - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
to_tsquery Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
Basic to_tsquery search output
Given a table documents with a text column content, what rows will match the query to_tsquery('cat & dog')?
PostgreSQL
SELECT id, content FROM documents WHERE to_tsvector(content) @@ to_tsquery('cat & dog');
ARows where content contains 'cat' followed immediately by 'dog' with no words between
BRows where content contains either 'cat' or 'dog', but not necessarily both
CRows where content contains the exact phrase 'cat dog' in sequence
DRows where content contains both 'cat' and 'dog' anywhere in the text
Attempts:
2 left
💡 Hint
The & operator means AND in to_tsquery syntax.
❓ query_result
intermediate
2:00remaining
Using OR operator in to_tsquery
What is the result of this query?
SELECT id FROM documents WHERE to_tsvector(content) @@ to_tsquery('cat | dog');
ARows containing either 'cat' or 'dog' or both
BRows containing both 'cat' and 'dog' only
CRows containing the exact phrase 'cat dog'
DRows containing neither 'cat' nor 'dog'
Attempts:
2 left
💡 Hint
The | operator means OR in to_tsquery syntax.
📝 Syntax
advanced
2:00remaining
Identify the syntax error in to_tsquery
Which option contains a syntax error when used inside to_tsquery()?
A'cat & | dog'
B'cat | dog'
C'cat & dog'
D'cat <-> dog'
Attempts:
2 left
💡 Hint
Check operator placement and usage rules.
❓ query_result
advanced
2:00remaining
Phrase search with <-> operator
What does this query return?
SELECT id FROM documents WHERE to_tsvector(content) @@ to_tsquery('cat <-> dog');
ARows where 'cat' and 'dog' appear separated by exactly one word
BRows where 'cat' is immediately followed by 'dog' in the text
CRows where 'cat' or 'dog' appear anywhere in the text
DRows where 'cat' and 'dog' appear anywhere in the text, order doesn't matter
Attempts:
2 left
💡 Hint
The <-> operator means words are adjacent in order.
🧠 Conceptual
expert
3:00remaining
Understanding lexeme normalization in to_tsquery
Which statement about to_tsquery lexeme normalization is true?
AIt ignores stop words but does not stem words
BIt searches for exact word matches without any normalization
CIt converts words to their root form (stemming) before searching
DIt only matches words at the start of the text
Attempts:
2 left
💡 Hint
Think about how PostgreSQL handles word variations in full text search.

Practice

(1/5)
1. What does the to_tsquery function do in PostgreSQL?
easy
A. It converts search terms into a format for full-text search queries.
B. It creates a new table for storing search terms.
C. It updates text columns with search keywords.
D. It deletes rows that match search terms.

Solution

  1. Step 1: Understand the purpose of to_tsquery

    to_tsquery converts plain search words into a special query format that PostgreSQL can use for full-text searching.
  2. Step 2: Compare options with the function's role

    Only It converts search terms into a format for full-text search queries. correctly describes this conversion role. Other options describe unrelated database actions.
  3. Final Answer:

    It converts search terms into a format for full-text search queries. -> Option A
  4. Quick Check:

    to_tsquery = converts search terms [OK]
Hint: Remember: to_tsquery prepares search words for text search [OK]
Common Mistakes:
  • Thinking it creates or modifies tables
  • Confusing it with data update or delete operations
  • Assuming it returns raw text instead of a query format
2. Which of the following is the correct syntax to create a to_tsquery for searching the words 'cat' AND 'dog' using the explicit AND operator?
easy
A. to_tsquery('cat | dog')
B. to_tsquery('cat & dog')
C. to_tsquery('cat dog')
D. to_tsquery('cat && dog')

Solution

  1. Step 1: Recall the AND operator in to_tsquery

    The AND operator is represented by & in to_tsquery syntax.
  2. Step 2: Match the correct syntax

    to_tsquery('cat & dog') uses & correctly between 'cat' and 'dog'. to_tsquery('cat | dog') uses OR, C misses operator, and D uses invalid &&.
  3. Final Answer:

    to_tsquery('cat & dog') -> Option B
  4. Quick Check:

    AND = & in to_tsquery [OK]
Hint: Use & for AND, | for OR in to_tsquery strings [OK]
Common Mistakes:
  • Using spaces without operators to mean AND
  • Using double ampersands (&&) instead of single &
  • Confusing OR (|) with AND (&)
3. Given the query:
SELECT to_tsquery('fast & !slow');
What is the expected output?
medium
A. 'fast' | !'slow'
B. Syntax error
C. 'fast' & !'slow'
D. 'fast slow'

Solution

  1. Step 1: Understand the operators in the query

    The query uses AND (&) between 'fast' and NOT (!) 'slow'. This means search for 'fast' but exclude 'slow'.
  2. Step 2: Check the output format of to_tsquery

    PostgreSQL returns the query as a string with words quoted and operators preserved. So output is 'fast' & !'slow'.
  3. Final Answer:

    'fast' & !'slow' -> Option C
  4. Quick Check:

    AND = & and NOT = ! in output [OK]
Hint: NOT is !, AND is & in to_tsquery output [OK]
Common Mistakes:
  • Confusing OR (|) with AND (&)
  • Expecting raw words without quotes
  • Thinking the query causes syntax error
4. Identify the error in this query:
SELECT to_tsquery('apple & | orange');
medium
A. Syntax error due to consecutive operators & |
B. No error, valid query
C. Error because words must be uppercase
D. Error because to_tsquery needs two arguments

Solution

  1. Step 1: Analyze the operator usage in the query string

    The string has & | operators consecutively without a word between them, which is invalid syntax.
  2. Step 2: Confirm PostgreSQL behavior

    PostgreSQL will raise a syntax error because operators must separate valid search terms, not each other.
  3. Final Answer:

    Syntax error due to consecutive operators & | -> Option A
  4. Quick Check:

    Operators must separate words, not each other [OK]
Hint: Avoid placing operators consecutively without words [OK]
Common Mistakes:
  • Assuming multiple operators in a row are allowed
  • Thinking case of words matters
  • Believing to_tsquery requires multiple arguments
5. You want to search for documents containing the word 'run' but not 'running'. Which to_tsquery expression correctly achieves this?
hard
A. to_tsquery('run ! running')
B. to_tsquery('run | !running')
C. to_tsquery('run & !run')
D. to_tsquery('run & !running')

Solution

  1. Step 1: Understand the requirement

    You want documents that contain 'run' but exclude those that contain 'running'. This means AND 'run' and NOT 'running'.
  2. Step 2: Choose the correct operator usage

    AND is & and NOT is !. to_tsquery('run & !running') uses these correctly. to_tsquery('run | !running') uses OR which is wrong. to_tsquery('run & !run') excludes 'run' itself. to_tsquery('run ! running') has invalid syntax (missing operator between 'run' and '!').
  3. Final Answer:

    to_tsquery('run & !running') -> Option D
  4. Quick Check:

    AND = & and NOT = ! for correct filtering [OK]
Hint: Use & for AND, ! for NOT to exclude terms [OK]
Common Mistakes:
  • Using OR instead of AND for inclusion
  • Excluding the main word accidentally
  • Missing operators between words
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard