devspec
@devspec
Помогло? Отметь решением

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы