BM25’s other parameter - WTF is k3? (daily search tip)


You may know BM25 lets you tune two parameters:

  • k1: how quickly to saturate document term frequency’s contribution
  • b: how much to bias towards below average length docs

What you may NOT know is there is another parameter k3

What does k3 do? It handles repeated query terms.

Old papers suggest k3=100 to 1000, which immediately saturates. That’s why Lucene ignores k3. It just uses the query term frequency. Some other search engines like Terrier set it to 8.

So for the query, “Best dog toys for rambunctious dog”

  • Lucene engines count dog twice
  • Terrier, with k3=8, would count in 1.8 times: ((8 + 1) * 2) / (8 + 2) = 18 / 10 = 1.8

Which is right? For traditional search queries, we ignore k3.A few keywords usually don't have repeated terms.

In today’s question answering world, though, its reasonable to wonder if we should bring k3 back?

If you’ve used k3 in search, let me know, I’d love to hear your story!

-Doug

AI Powered Search has STARTED - late signups available here

Events · Consulting · Training (use code search-tips)

You're subscribed to Doug Turnbull's daily search tips where I share tips, blog articles, events, and more. You can always manage your profile:

Doug Turnbull

I share search tips, blog articles, and free events I'm hosting about the search+retreval industry, vector databases, information retrieval and more.

Read more from Doug Turnbull

Reviewing Bayesian BM25 - a new approach to creating calibrated BM25 probabilities for hybrid search. I talk about this vs naive approaches I've used to do similar things. Enjoy! https://softwaredoug.com/blog/2026/03/06/probabilistic-bm25-utopia -Doug Events · Consulting · Training (use code search-tips) You're subscribed to Doug Turnbull's daily search tips where I share tips, blog articles, events, and more. You can always manage your profile:

Rare terms have high inverse document frequency (IDF). BM25 scoring treats high IDF terms as more relevant. Why? We assume if a term occurs rarely in the corpus, it must unambiguously point to what the user wants. It’s specific. But that’s not always true. Not all text is created equal. Corpuses violate this assumption frequently. Why? No need to use a common term - Book titles may rarely mention the word “book”, but clearly “book” in a book index has low specificity. Language gaps between...

BM25 models the odds a term would be observed in a relevant document (vs the term occurring in an irrelevant doc). It’s based on probabilistic relevance, capturing: t - a query term match occurs R - the doc is relevant Queries of course contain multiple terms. How do we combine those odds? The odds of BOTH terms being in a relevant doc, we’d need to multiply Odds(t1) * Odds(t2). If we take the log of these multiplied odds, we can take advantage of a property of logarithms: log(Odds(t1) *...