Basic Usage
Thepdb.score(<key_field>) function produces a BM25 score and can be added to any query where any of the ParadeDB operators are present.
description is indexed, including rating in the BM25 index definition will allow results matching
rating < 2 to rank higher than those that do not match.
Joined Scores
First, let’s create a second table calledorders that can be joined with mock_items:
Directly computing and ordering by the sum of scores across a join (e.g.
ORDER BY pdb.score(t1) + pdb.score(t2)) is currently not efficient. For more
details on implementing efficient support for this operation, please refer to
Issue #5301.Deterministic Sorting
Ordering bypdb.score alone is not sufficient to guarantee deterministic query results when there are multiple documents with the same score.
To ensure stable output, we recommend adding a tiebreaker column (such as the primary key) after the score:
Score Refresh
The scores generated by the BM25 index may be influenced by dead rows that have not been cleaned up by theVACUUM process.
Running VACUUM on the underlying table will remove all dead rows from the index and ensures that only rows visible to the current
transaction are factored into the BM25 score.