Я не совсем понимаю, как нечетко работает на этапе агрегации $ searchBeta. Я не получаю желаемый результат, который мне нужен, когда я пытаюсь реализовать полнотекстовый поиск на своем сервере. Полнотекстовый поиск для MongoDB был выпущен в прошлом году (2019), так что на самом деле не так много учебников и / или ссылок на go, кроме документации. Я прочитал документацию, но я все еще в замешательстве, поэтому я хотел бы получить некоторые разъяснения.
Допустим, у меня есть эти 5 документов в моей базе данных:
{
"name": "Lightning Bolt",
"set_name": "Masters 25"
},
{
"name": "Snapcaster Mage",
"set_name": "Modern Masters 2017"
},
{
"name": "Verdant Catacombs",
"set_name": "Modern Masters 2017"
},
{
"name": "Chain Lightning",
"set_name": "Battlebond"
},
{
"name": "Battle of Wits",
"set_name": "Magic 2013"
}
И это моя агрегация в MongoDB Compass:
db.cards.aggregate([
{
$searchBeta: {
search: { //search has been deprecated, but it works in MongoDB Compass; replace with 'text'
query: 'lightn',
path: ["name", "set_name"],
fuzzy: {
maxEdits: 1,
prefixLength: 2,
maxExpansion: 100
}
}
}
}
]);
То, что я ожидаю, мой результат будет:
[
{
"name": "Lightning Bolt", //lightn is in 'Lightning'
"set_name": "Masters 25"
},
{
"name": "Chain Lightning", //lightn is in 'Lightning'
"set_name": "Battlebond"
}
]
То, что я на самом деле получаю:
[] //empty array
Дон Я не понимаю, почему мой результат пуст, поэтому было бы очень признательно, если бы кто-то объяснил, что я делаю неправильно.