curiosity

Article · Search scores

What does a search score mean?

A search score is the number a search engine uses to put results in order. It says one result ranks above another for this query, in this index, at this moment. It is not a percentage or a probability, and scores from two different searches cannot be compared.

Topic Search scores Reading time 7 min References 7 Updated October 2026

In short

A search score is a number that puts results in order for one query: a higher score ranks first, and that is all it promises. It is not a grade, a percentage or the probability that a result is right.

Three words are often used as one. A rank is a place in the list: first, second, third. Relevance is whether a result answers what you need, and only a reader can judge it. A score sits between the two. It is the engine’s evidence for the rank, on a scale that belongs to one search.

How a score is made

Most scores are a sum of parts, each measured on its own scale. Our paper on search scores names five: search terms, text similarity, graph links, recency and boosts. Other engines use a similar set under other names.

Search terms. Keyword engines score the words a record shares with the query, commonly with BM25. A rare term counts for more than a common one, a repeated term adds less each time, and a long record is damped. Elasticsearch uses BM25 by default, with two settings: k1 at 1.2 controls how fast repeats stop counting, and b at 0.75 how much length matters. A BM25 score has no fixed top. Our article on hybrid search walks through the formula.

Text similarity. Meaning-based search compares vectors, the lists of numbers a language model produces for a text. Cosine similarity runs from minus 1 to 1. Elasticsearch turns it into a score as (1 + cosine) / 2, so a cosine of 0, no measurable likeness at all, still scores 0.5.

Graph links, boosts and recency. A graph can add a signal for the links two records share, such as the same part or supplier. A boost makes chosen fields or sources count more. Curiosity’s ranking tuning guide notes that boosts multiply: a title boost of 2.0 makes a title match count twice as much as a body match at 1.0. Recency lowers the score of older records. In Curiosity Studio the last 14 days keep their full score by default.

How it is built

Five parts, one number

One record’s score, built part by part. The query, the record and the values are examples. Pick a step to stop the drawing and read it.

One search score built from five parts The query hydraulic leak door 4 matches ticket T-4471. Its score is built from search terms, which add 6.0, text similarity, which adds 2.4, graph links, which add 1.6, and a title boost, which adds 1.4. The ticket is 3 days old, so recency keeps its full score. The parts add up to a score of 11.4 on a bar with no fixed top. The values are examples. QUERYhydraulic leak door 4TICKET T-447101 · SEARCH TERMSRare words count more+6.002 · TEXT SIMILARITYCloser meaning scores higher+2.403 · GRAPH LINKSShares a door and a supplier+1.604 · BOOSTA title match counts double+1.405 · RECENCY3 days old: full score× 1.0SCORE 11.4NO FIXED TOP
One search score built from five parts Ticket T-4471 matches the query hydraulic leak door 4. Search terms add 6.0, text similarity 2.4, graph links 1.6 and a title boost 1.4. At 3 days old, recency keeps the full score. The parts add up to 11.4, on a bar with no fixed top. The values are examples. QUERYTICKET T-4471hydraulic leak door 401 · SEARCH TERMSRare words count more+6.002 · TEXT SIMILARITYCloser meaning scores higher+2.403 · GRAPH LINKSShares a door and a supplier+1.604 · BOOSTA title match counts double+1.405 · RECENCY3 days old: full score× 1.0SCORE 11.4NO FIXED TOP
  1. 01

    One query, one record

    An engineer searches hydraulic leak door 4. A ticket matches. Its score is built in parts.

  2. 02

    Search terms

    Rare words count more. Hydraulic is rare in this index, door is common. This part has no fixed top.

  3. 03

    Text similarity

    The ticket is close in meaning to the query. Its similarity, on a scale of its own, is weighted and added.

  4. 04

    Graph links

    The ticket links to the same door and the same supplier as other matches. That adds a little more.

  5. 05

    Boost and recency

    The query matched the title, which counts double. The ticket is 3 days old, so it keeps its full score.

  6. 06

    One number

    The parts add up to 11.4. Nothing caps it: there is no 100, and no value means a perfect match.

Why it is not a percentage

A percentage is a share of a known whole. A score has no whole, and no value means a perfect match. The Apache Lucene project’s wiki puts it plainly: “score values are meaningful only for purposes of comparison between other documents for the exact same query and the exact same index.”

The same page shows why dividing by the best score does not help. Three documents score 2.345, 16.415 and 2.345. As shares of the best, they read 14%, 100% and 14%. Delete the best one, and the other two jump to 100%. Neither of them changed, and neither became more relevant.

Nor is a score a probability. Robertson and Zaragoza’s 2009 review of BM25 is explicit about it. It derives the formula on the basis that “the only property we wish to preserve is the rank order of documents.” Parts that would not change the order are dropped along the way. The review notes that a good estimate of the probability of relevance would need them.

Why two searches do not compare

A score depends on the query and on everything else in the index. BM25 weighs a term by how rare it is in the collection, so adding records changes the score of records that did not change. Microsoft’s Azure AI Search documentation lists this among the reasons scores shift from one query to the next. It describes scores as “reflecting the strength of match relative to other documents in the same result set.”

So a 14.2 for a query with a part number and a 3.1 for a vague question say nothing about each other. Rare terms score high and common words score low, whatever the results are worth. Keyword scores and vector scores also sit on different scales. That is why hybrid search has to merge its two lists by rank, or after rescaling the scores.

Reading a list

Two lists, two full bars

Bars drawn against the best score make every top result look the same. The gaps tell them apart. Pick a step to stop the drawing and read it.

Two searches whose top bars are both full Search A, valve 77-210 seal, scores 14.2, 13.6, 4.1 and 3.8. Search B, why is the line slow, scores 3.1, 2.9, 2.8 and 2.6. Each bar is drawn against the best score in its own list, so both top bars are full and read 100%. Search A drops after its second result; Search B never drops. The values are examples. SEARCH Avalve 77-210 seal0114.20213.6034.1043.8TOP BAR · 100%DROP AFTER 02SEARCH Bwhy is the line slow013.1022.9032.8042.6TOP BAR · 100%NO DROP
Two searches whose top bars are both full Search A scores 14.2, 13.6, 4.1 and 3.8. Search B scores 3.1, 2.9, 2.8 and 2.6. Bars are drawn against the best score in each list, so both tops read 100%. Search A drops after its second result; Search B never drops. The values are examples. SEARCH Avalve 77-210 seal0114.20213.6034.1043.8TOP BAR · 100%DROP AFTER 02SEARCH Bwhy is the line slow013.1022.9032.8042.6TOP BAR · 100%NO DROP
  1. 01

    Two searches, one index

    Search A names a valve by its part number. Search B asks a vague question in common words.

  2. 02

    Search A scores high

    A rare part number scores high. Two records match it well, then the scores fall.

  3. 03

    Search B scores low

    Common words score low, whatever the results are worth. Its four scores sit close together.

  4. 04

    Bars drawn against the best

    Each bar is as long as its score, compared with the best score in its own list.

  5. 05

    Both tops read 100%

    As a share of the best, the top result of each search reads 100%. The two tops are not equally good.

  6. 06

    The gap is the signal

    Search A drops after its second result: two strong matches, then weak ones. Search B never drops.

How scores get misread

  • A fixed cutoff on a keyword score, such as hiding everything under 5. It drops good results for queries in common words and keeps weak ones for rare words.
  • A bar or a percentage read as a grade. The top bar is full in every search, including one where nothing matched well.
  • Two searches, or two versions of an index, compared by their top scores instead of by judged results.
  • An assistant that treats the first result as the answer because its score is high. A high score says the record is the best match found, not that it answers the question.

How to read a score

Three questions cover most decisions about a ranked list:

  1. Am I comparing results from one search only? Order and gaps inside one list carry meaning. Numbers across lists do not.
  2. Where does the list drop? A large gap between two neighbors often marks the end of the strong matches. A flat list means nothing stood out.
  3. Have I read the top results? Whether a result fits is in its content, not in its number.

When a system needs a threshold, set it on a bounded scale and measure it. The tuning guide sets a vector similarity cutoff at the lowest value that still keeps the right results on queries people have judged. Our article on hybrid search describes how to judge a ranking.

How Curiosity shows a score

In Curiosity Studio, keyword search, vector similarity and graph links run over the same graph. A result’s score combines the parts its search uses. Which parts count depends on the search: a plain keyword search mainly uses search terms and recency, and a similarity view can add meaning and links.

A similarity view draws a bar beside each result, as long as its score compared with the best one in the list. So the top bar is always full, and the bars show the order and the gaps, not a grade. Developers can see why a result scored where it did: see search for developers.

The boosts, the recency window and the vector cutoffs are settings you tune against your own judged queries. Our paper What a search score means explains all of this in ten pages, for anyone who reads ranked results.

FAQ

Questions people ask

Is a search score a percentage?

No. A percentage is a share of a known whole, and a score has none: no value means a perfect match. It puts results in order for one query. A bar drawn against the best result is full at the top of every list.

Can I compare scores from two different searches?

No. A score depends on the query’s words and on the rest of the index, so each search has its own scale. Compare results within one list, by their order and the gaps between them.

What is a good search score?

There is no such value. A keyword score has no fixed top, and the same number means different things in different searches. Judge a result by reading it, and judge a ranking against queries people have marked.

Why does the top search result always show a full bar?

Because the bar is drawn against the best score in that list. The best result fills it whether it matches well or poorly. Read the gaps between the bars instead.

Your data. Your infrastructure.

Read the order. Judge the result.