#mongodb #mongodb-query #nosql #mongodb-indexes
#mongodb #mongodb-запрос #nosql #mongodb-индексы
Вопрос:
У меня уже есть текстовый индекс в MongoDB.
Простой поиск:
db.news.find({ $text: { $search: "covid" } })
Я получаю все статьи, содержащие covid, в тексте.
Теперь я хочу получить все статьи, содержащие как covid, так и вакцинацию.
Этот запрос, например…
db.news.find({ $text: { $search: ""covid vaccination"" } })
…вы найдете только статьи, содержащие «вакцинацию против covid» рядом друг с другом, в таком порядке. Другими словами, статья, структурированная следующим образом: «Вакцинация против covid…» не будет найдена.
Я хочу найти все статьи, в которых covid и вакцинация включены в статью, независимо от позиции каждого слова, используя текстовый индекс. Есть какие-нибудь идеи?
Ответ №1:
Я перепроверил документацию MongoDB и не нашел способа, как это сделать. Может быть, это поможет:
db.news.find({$text: {$search: "covid vaccination"}}).sort({score: {$meta: "textScore"}})
Это не даст требуемого результата, но, по крайней мере, результат будет отсортирован по баллам. Записи, содержащие как «covid», так и «вакцинацию», должны быть вверху
Комментарии:
1. Он функционирует так, как будто между словами есть оператор ИЛИ. Я получаю все статьи о ковиде и все статьи о вакцинации.
2. Извини, это моя вина. Я обновил свой комментарий, чтобы, по крайней мере, попытаться помочь вам найти решение
3. На один шаг ближе к конечной цели. Спасибо вам 🙂