简体   繁体   中英

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?

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM