Skip to main content

Boosting

ParadeDB offers several ways to tune a document’s BM25 score. The first is boosting, which increases or decreases the impact of a specific query by multiplying its contribution to the overall BM25 score. To boost a query, cast the query to the boost type. In this example, the shoes query is weighted twice as heavily as the footwear query.
SELECT id, pdb.score(id), description, category
FROM mock_items
WHERE description ||| 'shoes'::pdb.boost(2) OR category ||| 'footwear'
ORDER BY score DESC
LIMIT 5;
boost takes a numeric value, which is the multiplicative boost factor. It can be any floating point number between -2048 and 2048. Query builder functions can also be boosted:
SELECT id, description, category, pdb.score(id)
FROM mock_items
WHERE description @@@ pdb.regex('key.*')::pdb.boost(2)
ORDER BY score DESC
LIMIT 5;
Boost can be used in conjunction with other type casts, like fuzzy:
SELECT id, description, category, pdb.score(id)
FROM mock_items
WHERE description ||| 'shose'::pdb.fuzzy(2)::pdb.boost(2)
ORDER BY score DESC
LIMIT 5;

Constant Scoring

Constant scoring assigns the same score to all documents that match a query. To apply a constant score, cast the query to the const type with a numeric value. For instance, the following query assigns a score of 1 to all documents matching the query shoes.
SELECT id, pdb.score(id), description, category
FROM mock_items
WHERE description ||| 'shoes'::pdb.const(1)
ORDER BY score DESC
LIMIT 5;