Mongo $ текстовый поиск - результаты не так, как я ожидал - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь использовать текстовый поиск mongo для замены существующего запроса, использующего $ regex для нескольких полей, и обнаружил, что результаты не соответствуют ожиданиям.Я создал небольшой пример ниже, чтобы продемонстрировать:

db.pers.insert({ 'name': 'Thoma', 'firstName': 'Albert'})
db.pers.insert({ 'name': 'Thoma', 'firstName': 'Berta'})
db.pers.insert({ 'name': 'Thoma', 'firstName': 'Charlie'})
db.pers.insert({ 'name': 'Thomas', 'firstName': 'David'})

db.pers.createIndex( {name: "text"} )

db.pers.find( {$text: { $search: 'Thomas'} }, { 'score': { $meta: 'textScore' } } ).pretty()

... и вот результаты:

{   
  "_id" : ObjectId("5d88a2914185d8425164d564"),
  "name" : "Thomas",
  "firstName" : "David",
  "score" : 1
}
{
  "_id" : ObjectId("5d88a2674185d8425164d561"),
  "name" : "Thoma",
  "firstName" : "Albert",
  "score" : 1.1
}
{
  "_id" : ObjectId("5d88a26e4185d8425164d562"),
  "name" : "Thoma",
  "firstName" : "Berta",
  "score" : 1.1
}
{
  "_id" : ObjectId("5d88a2794185d8425164d563"),
  "name" : "Thoma",
  "firstName" : "Charlie",
  "score" : 1.1
}

Я удивлен, что точное совпадение Thomas получает меньшеоценка, чем другие результаты.

  • В чем причина этого?

  • Есть ли способ повлиять на счет так, чтобы точные совпадения былинабрал больше баллов?

Я хочу использовать счет для сортировки.Результат как таковой хорош, потому что я хочу найти Thoma в примере выше.Тем не менее, я также хотел бы, чтобы точное совпадение было в верхней части результатов поиска.

Любые отзывы о баллах или предложения по различным решениям приветствуются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...