Поиск с помощью оператора И в MongoDB с использованием оператора $текстового запроса

#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. На один шаг ближе к конечной цели. Спасибо вам 🙂