Обратные условия поиска в MongoDB - База данных, содержащая ключевые слова - PullRequest
1 голос
/ 06 марта 2020

В моей ситуации условия поиска и записи в базе данных меняются местами. У меня есть база данных, содержащая ключевые слова (обычно 1 или 2 слова), и у меня есть строки (обычно 3-5 слов), которые я хочу сравнить с записями в моей базе данных.

Например, вот два документа (из десятков) тысяч), которые сохраняются в коллекции в базе данных:

{ _id: 1, keyword: "John Smith" },
{ _id: 2, keyword: "Apple" }

Затем у меня есть следующие строки:

"John Smith wins the award",
"Apple.com",
"Apple Keynote Presentation"

Как видите, мои условия поиска и записи в базе данных поменялись местами. Я хочу выполнить поиск в базе данных, чтобы найти, есть ли в моей строке документ со свойством "ключевое слово". Примечание: я имею дело со строками (например, «Apple.com») по одной за раз и предоставил более одной только для иллюстрации.

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

Есть ли способ проверить, содержит ли строка ключевое слово без выведения ключевых слов из базы данных?

1 Ответ

2 голосов
/ 06 марта 2020

Вы можете легко достичь этого с помощью текстового индекса. просто добавьте текстовый индекс в вашу коллекцию следующим образом:

db.collection.createIndex({ keyword: "text" })

, а затем введите команду текстового поиска следующим образом:

db.collection.find({ $text: { $search: 'John Smith wins the award' } })

this объясняет, как это работает .

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