Задать вопрос
devspec
@devspec
Помогло? Отметь решением

Как организовать быстрый поиск по 3 млрд документов?

Здравствуйте

Столкнула меня жизнь с необходимостью в быстром поиске среди 3 млрд документов. Грубо говоря, это список ключевых запросов пользователей ПС, из которых нужно выбрать те, в которые входит, например, слово "скачать".
Залил я демонстрационный миллиард в MongoDb (получив, к слову, 239 гб данных в 139 файлах) и попробовал сделать выборку через Matches (я работаю с монго через драйвер c#).
Даже простой Count этого запроса выполнялся так долго, что у меня не хватило терпения. При этом монгой было занято 10% процессора и чуток памяти.
А хотелось бы, чтобы всё это делалось секунды, а не минуты или часы.
Подскажите, в какую сторону копать?

Спасибо.
  • Вопрос задан
  • 2643 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@Nc_Soft
elasticsearch
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@brutal_lobster
В сторону mongo index или text search engines - lucene, sphinx..
Ответ написан
Комментировать
@lega
Грубо говоря, это список ключевых запросов пользователей ПС, из которых нужно выбрать те, в которые входит, например, слово "скачать".
Если список ключевых слов не большой то можно сделать индексированный массив в документах и туда помещать эти ключевые слова (или их идентификаторы).
В противном случае использовать sphinx/elasticsearch. Можно так же использовать text index из mongoDB, но он мне показался через чур прожорливым.

попробовал сделать выборку через Matches
При этом происходит перебор и проверка всех документов, поэтому это так долго.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
04 янв. 2025, в 22:38
10000 руб./за проект
04 янв. 2025, в 22:36
20000 руб./за проект
04 янв. 2025, в 21:58
1000 руб./за проект