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