Jonathan Wadin
Jonathan Wadin

Reputation: 91

MongoDB Atlas Search autocomplete index wrong scoring

I have a MongoDB Atlas Search index with the autocomplete type on a field name and the following attributes :

maxGrams : 15
minGrams : 2
tokenization: edgeGram
fold diacritics: true

The collection contains the following names :

The American
The American Equity Underwriters
The American Prairie Foundation
The American Conservatory Theater
The American Club

With this autocomplete query :

{
  autocomplete: {
    query: 'The American',
    path: 'name'
  }
}

I'm able to retrieve all the names above with the following searchScore :

The American Conservatory Theater -> 15.474836349487305
The American Equity Underwriters -> 15.379003524780273
The American Prairie Foundation -> 15.379003524780273
The American Club -> 15.271049499511719
The American -> 13.68109130859375

Even if The America is the exact match it gets a lower score.

Why does the exact match searchScore is below the others ?

Upvotes: 4

Views: 988

Answers (1)

Jonathan Wadin
Jonathan Wadin

Reputation: 91

As a workaround I found something like:

{
  "compound": { 
    "should": [
      {
      "phrase": {
        "query": "The American", 
        "path": "name", 
        "score": { "boost": {"value": 5}}
      }},
    {
      "autocomplete": { 
        "query": "The American",
        "path": "name"}
    }
    ]
  }
}

The score boost on the phrase match will handle exact match and make the exact match score higher than others.

Upvotes: 5

Related Questions